"No such file or directory" on files that exist?

11,470

Very likely you have a 64-bit only system (as opposed to a multilib one) and Your dynamic loader doesn't recognise the 32-bit binary as an executable. You'll need to install 32-bit version of glibc (which includes the dynamic linker/loader - and which one that should be you can see on the first line of output of strings binary, by the way) and any other libraries the binary is linked against or a 64-bit version of the binary in question. Also see Getting "Not found" message when running a 32-bit binary on a 64-bit system for more information.

Share:
11,470

Related videos on Youtube

tkbx
Author by

tkbx

Human

Updated on September 18, 2022

Comments

  • tkbx
    tkbx over 1 year

    In the past day, I've found at least 4 binaries that say "bin-name: No such file or directory" when I try to run them. Even if I type part of the name and tab complete it, I get the same error. I'm on an x86_64 architecture.

    Output of file:

    fez-09152013-bin: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
    dynamically linked (uses shared libs), for GNU/Linux 2.6.24,
    BuildID[sha1]=0x78612e4aac547367548dcc7cc3067c3cfcf2f177, stripped
    

    Output of strace:

    execve("./fez-09152013-bin", ["./fez-09152013-bin"], [/* 23 vars */]) = -1 ENOENT (No such file or directory)
    dup(2)                                  = 3
    fcntl(3, F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
    fstat(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3fda17a000
    lseek(3, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
    write(3, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
    ) = 40
    close(3)                                = 0
    munmap(0x7f3fda17a000, 4096)            = 0
    exit_group(1)                           = ?
    

    Output of ldd:

    Not a dynamic executable
    

    Output of strings is way too long to indent, so here's a link: http://pastebin.com/t7MmugLY

    apt-get error:

    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:
    
    The following packages have unmet dependencies:
     ia32-libs : Depends: ia32-libs-i386 but it is not installable
    E: Unable to correct problems, you have held broken packages.
    
    • schaiba
      schaiba over 10 years
      If the file isn't in PATH, try ./bin-name if you are in the directory where it resides, or enter its full path : /path/to/bin-name .
    • slm
      slm over 10 years
      I would also suggest running the command strings bin-name to see what the files might be
    • michas
      michas over 10 years
      What OS? what is the output of ls -l bin-name and file bin-name and strace bin-name?
    • ott--
      ott-- over 10 years
      Not to forget ldd bin-name.
    • tkbx
      tkbx over 10 years
      @michas I'm running Debian 64-bit (Crunchbang). Edited question to include info
    • tkbx
      tkbx over 10 years
      @ott-- Edited question to include info
    • ott--
      ott-- over 10 years
      file says dynamic and ldd says not dynamic. It could be a binary from an old ld-so version. So try that strings file | grep ld-linux.
    • Jeff Hewitt
      Jeff Hewitt over 10 years
      Hmmm... Could it be this issue?
    • tkbx
      tkbx over 10 years
      @ott-- It says /lib/ld-linux.so.2
    • ott--
      ott-- over 10 years
      See my comment belows about installing the ia32-libs.
  • ott--
    ott-- over 10 years
    Indeed, running apt-get install ia32-libs could solve this.
  • tkbx
    tkbx over 10 years
    @ott-- I'm getting the error I'll add to my question. If I remove testing, experimental, and unstable from my sources, will it cause problems for packages installed from there?