Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.
uprego@udv1320ku12:~$ ls /usr/bin/ -thral | grep java
-rwxr-xr-x 1 root root 78 Aug 25 2010 javacc
-rwxr-xr-x 1 root root 2.5K Mar 13 2012 dh_nativejava
lrwxrwxrwx 1 root root 22 Sep 23 19:40 java -> /etc/alternatives/java

/usr/bin/java exists, at least as a reference to something that may exist and be executable.

uprego@udv1320ku12:~$ strace /usr/bin/java
execve("/usr/bin/java", ["/usr/bin/java"], [/* 45 vars */]) = 0

Seems /usr/bin/java resolved correctly to an executable doc.

uprego@udv1320ku12:~$ ls /home/uprego/skype- -thral
total 26M
-rw-r--r-- 1 uprego uprego 7.0K Jul 13 10:53 third-party_attributions.txt
drwxr-xr-x 2 uprego uprego 4.0K Jul 13 10:53 sounds
-rw-r--r-- 1 uprego uprego 161 Jul 13 10:53 skype.desktop
-rw-r--r-- 1 uprego uprego 453 Jul 13 10:53 skype.conf
-rwxr-xr-x 1 uprego uprego 26M Jul 13 10:53 skype

/home/uprego/skype- exists as a doc, exec permission on.

uprego@udv1320ku12:~$ strace /home/uprego/skype-
execve("/home/uprego/skype-", ["/home/uprego/skype-"],
    [/* 45 vars */]) = -1 ENOENT (No such file or directory)

Does it really exist?

Thanks for your attention.

share|improve this question

closed as not a real question by Ƭᴇcʜιᴇ007, Canadian Luke, TFM, Hennes, ChrisF Nov 17 '12 at 21:35

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

And file skype ( in that directory) says what? –  ott-- Nov 17 '12 at 20:11
ELF 32-bit LSB..! –  galegosimpatico Nov 17 '12 at 20:46

1 Answer 1

up vote 1 down vote accepted

When execve() returns the error ENOENT, it can mean more than one thing:

  • the program doesn't exist;
  • the program itself exists, but it requires an "interpreter" that doesn't exist.

ELF executables can request to be loaded by another program, in a way very similar to #!/bin/something in shell scripts.

Usually, dynamically-linked executables request /lib/ld-linux.so.2 (or another similar path), which takes care of finding the necessary shared libraries and loading them into memory before the program itself is started.

In this case, I am guessing that you're trying to run a 32-bit Skype on a 64-bit system, and you haven't installed the 32-bit glibc and other needed libraries. (On Debian, it should be libc6:i386; on Arch, lib32-glibc.)

To see the exact path requested by the program, use readelf -l:

$ readelf -l /bin/sh | grep interpreter
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

$ readelf -l /tmp/skype- | grep interpreter
      [Requesting program interpreter: /lib/ld-linux.so.2]
share|improve this answer
Installed the 32 bitted glibc with a sudo aptitude install libc6-dev-i386 now asks for the 32 bitted libasound2, for which I see no precompiled candidate. Office colleague suggests chrooting. I think I'm trying that and coming back to 32 bit libraries if that does not progress. Thank you. –  galegosimpatico Nov 17 '12 at 21:10
@uprego: Try lib32asound2 or libasound2:i386, depending on OS version. Or, actually, just download Skype's .deb package... –  grawity Nov 17 '12 at 22:53

Not the answer you're looking for? Browse other questions tagged or ask your own question.