zoukankan      html  css  js  c++  java
  • 今天又学了一招,牛逼!!!解决"-bash:No such file or directory"问题

    今天在64服务器上:发现好像bash 坏了,用户名前边   用-bash 显示,,前几天就发现这个问题,,,但是当时忙没有解决,,,,,今天来看看到底是怎么回事!

    File Exists but... "-bash: No such file or directory"

    网上找到一篇文章,是说ubuntu系统的,我现在使用的是RHEL6.1 ,先不说其他的,先实践再说,完了看效果!!

    -----------------粘贴网上原文---------原文地址:http://superuser.com/questions/344533/no-such-file-or-directory-error-in-bash-but-the-file-exists

    On Ubuntu, I get a 'No such file or directory' error when I try to execute a command.

    I have checked with ls -la , the file adb is there and it has 'x' flag So why I am getting a 'No such file or directory'?

    ~/Programs/android-sdk-linux_x86/platform-tools$ ./adb
     bash: ./adb: No such file or directory
    ~/Programs/android-sdk-linux_x86/platform-tools$ ls -la
     total 34120
     drwxrwxr-x 3 silverstri silverstri     4096 2011-10-08 18:50 .
     drwxrwxr-x 8 silverstri silverstri     4096 2011-10-08 18:51 ..
     -rwxrwxr-x 1 silverstri silverstri  3764858 2011-10-08 18:50 aapt
     -rwxrwxr-x 1 silverstri silverstri   366661 2011-10-08 18:50 adb
     -rwxrwxr-x 1 silverstri silverstri   906346 2011-10-08 18:50 aidl
     -rwxrwxr-x 1 silverstri silverstri   328445 2011-10-08 18:50 dexdump
     -rwxrwxr-x 1 silverstri silverstri     2603 2011-10-08 18:50 dx
     drwxrwxr-x 2 silverstri silverstri     4096 2011-10-08 18:50 lib
     -rwxrwxr-x 1 silverstri silverstri 14269620 2011-10-08 18:50 llvm-rs-cc
     -rwxrwxr-x 1 silverstri silverstri 14929076 2011-10-08 18:50 llvm-rs-cc-2
     -rw-rw-r-- 1 silverstri silverstri      241 2011-10-08 18:50 llvm-rs-cc.txt
     -rw-rw-r-- 1 silverstri silverstri   332494 2011-10-08 18:50 NOTICE.txt
     -rw-rw-r-- 1 silverstri silverstri      291 2011-10-08 18:50 source.properties
    shareimprove this question
     
        
    what do you get if you run file adb – jdigital Oct 9 '11 at 5:43
        
    i get this '$ file adb adb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped ' – michael Oct 13 '11 at 3:56

    7 Answers

    It's an executable file that misses required libraries. Use ldd to see what it needs, then provide these files.

    shareimprove this answer
     
    10  
    i get this '$ ldd ./adb not a dynamic executable' – michael Oct 11 '11 at 0:36

    Android SDK requires 32-bit libraries. You probably are on 64-bit and need the 32-bit libs. Here are the troubleshooting directions from developer.android.com

    For Ubuntu 13.10 (Saucy Salamander) and above, install the libncurses5:i386libstdc++6:i386, and zlib1g:i386 packages using apt-get:

    sudo dpkg --add-architecture i386
    sudo apt-get update
    sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386

    For earlier versions of Ubuntu, install the ia32-libs package using apt-get:

    apt-get install ia32-libs
    shareimprove this answer
     
    2  
    damn that installs a lot of stuff. But it works. – Travis R May 1 '12 at 2:43
    1  
    Like michael, "file" told me it was a 32 bit ELF binary and ldd told me it was not a dynamic executable. Installing these 32 bit libraries fixed the problem. – Eponymous Sep 10 '12 at 19:06
    2  
    Most misleading error message EVER! o_O – MathematicalOrchid Apr 23 '14 at 16:46
        
    re:{Here are the troubleshooting directions from developer.android.com} I don't see any troubleshooting directions there... – ruslo May 18 at 12:58
    sudo apt-get install --reinstall libc6-i386

    is also need for me.

    shareimprove this answer
     
    3  
    Did you mean that helped? Any idea why? Where did you get this from? – Tom Wijsman Apr 12 '12 at 15:56

    I was also seeing the same after switching my machine from 32 bit ubuntu to 64 bit. Bash would report 'No such file or directory' of files that clearly existed with the execute attribute.

    sudo apt-get install --reinstall libc6-i386

    Fixed the problem. These are the "GNU C Library: 32-bit shared libraries for AMD64"

    Seems like this is a bug in bash. Note that I also changed the default shell from dash to bash using

    sudo dpkg-reconfigure dash

    before I tried running the 32 bit executable. So I'm not sure if the problem would have happened with the default dash shell

    shareimprove this answer
     

    On a fresh Xubuntu 13.10 x64 install I got adb to run with:

    sudo apt-get install --reinstall libc6-i386
    sudo apt-get install libstdc++6:i386

    And also zlib1g:i386 to make aapt work.

    and if you still miss something use:

    lld adb
    shareimprove this answer
     
        
    This worked great for me, but I had to call sudo dpkg --add-architecture i386; sudo apt-get updateto make libstdc++6:i386 available – nicopico Feb 12 '14 at 15:53

    For adb make sure you have the SDK unpacked and have run the SDK Manager to fully populate the SDK. Additionally make sure you have the following installed: A.) JDK 6 or better B.) lib32stdc++6 C.) lib32ncurses5

    hoffmanc was the closest to getting it right, I don't really understand why the answer from Daniel Beck is marked as correct when it's not even close and has nothing to do with the problem.

    Incidentally, if you try to run a truly non-existant command (i.e.:

    # fakecommand

    you'll get: fakecommand: command not found, whereas in your situation the output you are seeing is actually coming from adb even though it's not very clear that is the case.

    shareimprove this answer
     

    Ubunto seems to have some issues with LSB compatibility, so try this if you are on Ubunto

    apt-get install lsb

    Note that ldd will sort of show that all the libraries are there, but they are not.

    usmp-vm-lamp01$ ldd lmgrd
     linux-vdso.so.1 =>  (0x00007fffb33fe000)
     libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f10b0a48000)
     libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f10b074c000)
     libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f10b0535000)
     libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f10b0175000)
     libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f10aff71000)
     /lib64/ld-lsb-x86-64.so.3 => /lib64/ld-linux-x86-64.so.2 (0x00007f10b0c67000)
    usmp-vm-lamp01$ locate libpthread.so.0
    /lib/x86_64-linux-gnu/libpthread.so.0
    usmp-vm-lamp01$ locate libm.so.6
    /lib/x86_64-linux-gnu/libm.so.6
    usmp-vm-lamp01$ locate /lib64/ld-lsb-x86-64.so.3
    usmp-vm-lamp01$
    shareimprove this answer
     
        
    I was having this problem with a speech recognition package called Julius. This is what fixed it for me. – Fireandlight27 Oct 16 '14 at 14:16

    ----------------- -------------------------------------------------

    我的操作步骤!

     

    702 find / | grep rhel6.1                               找到yum的安装包目录 
    703 cd /home/mdsoss/rhel6.1_x64               cd 到该目录 
    704 ls
    705 cd Packages/                                                                       -----------------------
    706 ls                                                                                                        |
    707 ls libncurse*                                                                                         |
    708 ls *ncurse*                                 |
    709 rpm -ivh ncurses-devel-5.7-3.20090208.el6.i686.rpm                               |
    710 rpm -ivh ncurses-devel-5.7-3.20090208.el6.x86_64.rpm                          |
    711 ls                                                                                     -----------------------------无用
    712 ls *stdc++*
    713 rpm -ivh libstdc++-devel-4.4.5-6.el6.x86_64.rpm
    714 rpm -ivh compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm
    715 rpm -ivh libstdc++-4.4.5-6.el6.x86_64.rpm
    716 rpm -ivh libstdc++-docs-4.4.5-6.el6.x86_64.rpm                                安装所有的相关包
    717 rpm -ivh libstdc++-4.4.5-6.el6.i686.rpm
    718 rpm -ivh libstdc++-devel-4.4.5-6.el6.i686.rpm
    719* ls
    720 ls *ncurse*
    721 rpm -ivh ncurses-devel-5.7-3.20090208.el6.i686.rpm
    722 rpm -ivh ncurses-libs-5.7-3.20090208.el6.i686.rpm
    723 rpm -ivh ncurses-libs-5.7-3.20090208.el6.x86_64.rpm
    724 rpm -ivh ncurses-term-5.7-3.20090208.el6.x86_64.rpm                      安装所有的相关包
    725 rpm -ivh ncurses-5.7-3.20090208.el6.x86_64.rpm
    726 rpm -ivh ncurses-base-5.7-3.20090208.el6.x86_64.rpm
    727 rpm -ivh ncurses-devel-5.7-3.20090208.el6.x86_64.rpm
    728 rpm -ivh ncurses-devel-5.7-3.20090208.el6.i686.rpm
    729 ls *zlib*
    730 rpm -ivh zlib-1.2.3-25.el6.x86_64.rpm
    731 rpm -ivh zlib-1.2.3-25.el6.i686.rpm
    732 rpm -ivh zlib-devel-1.2.3-25.el6.i686.rpm
    733 rpm -ivh zlib-devel-1.2.3-25.el6.x86_64.rpm                                安装所有的相关包
    734 rpm -ivh jzlib-1.0.7-7.5.el6.x86_64.rpm
    735 ls *ia*
    736 rpm -ivh yum-plugin-aliases-1.1.30-6.el6.noarch.rpm
    737 rpm -ivh libpciaccess-0.10.9-4.el6.x86_64.rpm                        安装所有的相关包------ia相关包没找见  安装pci相关包
    738 rpm -ivh libpciaccess-0.10.9-4.el6.i686.rpm
    739 ls *libc6*
    740 ls *c6*
    741 ls *libc*
    742 rpm -ivh glibc-2.12-1.25.el6.x86_64.rpm
    743 rpm -ivh glibc-devel-2.12-1.25.el6.x86_64.rpm
    744 rpm -ivh glibc-2.12-1.25.el6.i686.rpm
    745 rpm -ivh glibc-common-2.12-1.25.el6.x86_64.rpm                   安装libc所有的相关包
    746 rpm -ivh glibc-devel-2.12-1.25.el6.x86_64.rpm
    747 rpm -ivh glibc-devel-2.12-1.25.el6.i686.rpm
    748 rpm -ivh glibc-headers-2.12-1.25.el6.x86_64.rpm
    749 rpm -ivh glibc-utils-2.12-1.25.el6.x86_64.rpm
    750 yum install glibc-utils
    751 ls
    752 ls *lsb*
    753 rpm -ivh redhat-lsb-4.0-3.el6.x86_64.rpm
    754 rpm -ivh redhat-lsb-graphics-4.0-3.el6.x86_64.rpm                   安装lsb所有的相关包,怕有一些LSB兼容性的问题
    755 rpm -ivh redhat-lsb-printing-4.0-3.el6.x86_64.rpm
    756 rpm -ivh redhat-lsb-4.0-3.el6.i686.rpm
    757 yum install redhat-lsb-4.0-3.el6.i686
    758 ls
    759 su - wgj1                                                                                   切换到之前的用户,,一切都变得正常了!!

     

    感觉今天有点小成就,又解决了一个问题,积硅步至千里!!!

    ------------------追更:现在我可能找到了根源,,,之前我在该用户下使用的是 默认的 bash   ----之后在这个环境下我启动了 zookeeper和kafka集群  ,,,之后又在该用户下编译了公司的代码,,,修改为csh,,,,,可能当时是这个原因照成上述情况,,,,之后我在该目录下 安装了flume  在该用户的  .bashrc 里边增加了java的环境变量!后边执行了  flume 或者 kafka bin下边的其他依赖java环境的脚本  命令,,,之后报的这个错,,,建议看完这边文章的朋友,先检查一下自己的 shell   看是不是 shell  引起的冲突!!!

  • 相关阅读:
    反射的高级运用:通过一个实体类,以及查询到数据库的DataReader,进行绑定
    windows平台下 反向代理 squid
    log4net 高级运用之:在页面级捕获可预见的异常,在全局应用程序类Global.asax中捕获未知的异常(更新log4net的样式和配置)
    IEnumerable的谨慎使用和IQueryable 的延迟执行
    ReSharper使用
    包含别人的dll,然后我们用类库再次封装成dll的时候的注意事项;源文件与模块生成时的文件不同;创建调试信息文件 ··PDB时发生意外的错误,进程无法访问文件,因为另一个程序正在使用此文件
    log4net使用(保存日志分别 到文本文件,smtp发送邮件,mssql数据库,mysql数据库)
    VC++中,CTime 与CString转换
    How to write a CV ?
    [转]VC解析XML使用CMarkup类解析XML
  • 原文地址:https://www.cnblogs.com/the-tops/p/6067016.html
Copyright © 2011-2022 走看看