Penguin

Differences between version 22 and predecessor to the previous major change of CommonErrors.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 22 Last edited on Thursday, July 3, 2003 3:27:19 pm by JohnMcPherson Revert
Older page: version 20 Last edited on Tuesday, May 6, 2003 10:51:28 am by JohnMcPherson Revert
@@ -2,15 +2,43 @@
  
 This occurs when it can't load a shared library, use "ldd(1)" to determine which libraries this program is trying to link against and which ones are missing or can't be linked against. eg: 
  ldd /bin/cat 
  
+----  
 !!"No such file or directory" 
 If you see this message when trying to run a program, even though you can plainly see it right in front of you, there are a couple of possibilities: 
-* If it is some kind of script, it might point to an interpreter that doesn't exist on your system. For example, it used to be common to see perl scripts whose first line was: 
+  
+1) Executable is a script  
+ If it is some kind of script, it might point to an interpreter that doesn't exist on your system. For example, it used to be common to see perl scripts whose first line was: 
  #!/usr/local/bin/perl 
 But if you had perl installed as /bin/perl or /usr/bin/perl you would get this message. 
-* Your dynamic binary executable is linked against a specific dynamic library on your system that has the same name (but different binary interfaces??) as the machine that the file was compiled on. This is particularly annoying as you can also get this message when trying to use ldd(1) to find out which dynamic library is causing the problem! If ldd(1) doesn't work, you are probably missing /lib/ld.so or /lib/ld-linux.so  
-* More commonly this program is linked against a library that doesn 't exist on your machine . If all your programs are saying this, try echo /lib/*, you'll probably find it empty :
+  
+2) Executable is a binary  
+ Your dynamic binary executable is linked against a library that doesn't exist, or against a specific dynamic library on your system that has the same name (but different binary interfaces??) as the machine that the file was compiled on. This is particularly annoying as you can also get this message when trying to use ldd(1) to find out which dynamic library is causing the problem! If ldd(1) doesn't work, you are probably missing /lib/ld.so or /lib/ld-linux.so  
+  
+Sometimes, missing libraries can cause ldd itself to fail, which can make it difficult to determine what the problem is. Eg:  
+ $ ./ninfo  
+ zsh: no such file or directory: ./ninfo  
+ $ file ./ninfo  
+ ./ninfo: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses  
+ shared libs), not stripped  
+ $ ldd ./ninfo  
+ /usr/bin/ldd: ./ninfo: No such file or directory  
+  
+This makes diagnosis a bit harder! However, you can try:  
+ $ /lib/ld-linux.so.2 --verify --list ./ninfo  
+ /usr/local/bin/ninfo: error while loading shared libraries: libc.so.5: cannot  
+ open shared object file: No such file or directory  
+  
+or  
+ $ strings ./ninfo | grep '\.so'  
+ /lib/ld-linux.so.1  
+ libtermcap.so.2  
+ libc.so.5  
+  
+and it becomes clear that this program is linked against very old versions of libraries that don 't exist any more . The program needs to be re-compiled against current versions ( you do have the source code, right? )  
+  
+----  
  
 !!Xlib: connection to ":0.0" refused by server 
  Xlib: connection to ":0.0" refused by server 
  Xlib: Client is not authorized to connect to Server 
@@ -20,8 +48,9 @@
  
 Also see the [XAuthNotes] page on giving other users permission to open graphical windows on your X server. 
  
  
+----  
  
 !!-bash: /bin/bash: Permission denied: /path/to/program 
  
 !!bash: /path/to/script: /bin/bash: bad interpreter: Permission denied 
@@ -60,12 +89,33 @@
  ping: sendto: Operation not permitted 
  ping: wrote 192.168.66.10 64 chars, ret=-1 
 The interface you are pinging out of (192.168.66.10) is firewalled. Fix your firewall :) 
  
+  
+----  
+  
+!!Your shell hangs  
+Your shell hangs, and it even ignores ctrl-c. You have to close the xterm (or gnome-terminal or konsole) to remove the process.  
+  
+Possible answer: you have inadvertently typed the special "stop" flow control character used by terminals. By default, this is ^S (control-s). By default, control-q sends a start character again. This is particularly common if you were pressing ctrl-d or ctrl-a or a nearby key on a QWERTY keyboard.  
+  
+You can use the stty(1) program to change this behaviour:  
+ $ stty -ixon  
+will tell your terminal not to use XON/XOFF flow control.  
+ $ stty stop ""  
+will mean that no character sends a stop character.  
+  
+ $ stty stop " "  
+causes your terminal to stop every time you press space. This is probably not a very clever thing to do (unless you are playing a trick on someone...)  
+  
+Re-defining the stop key has the added advantage that you can then use ctrl-s to search your command line in bash(1)/zsh(1) as well as ctrl-r for reverse search.  
+  
+  
+----  
 !!Kernel/libc Error Messages 
 See ErrorMessages 
  
 !! Error Messages for specific Applications 
 See ApplicationErrorMessages 
  
 !!Humorous Error Messages 
 FunnyApplicationErrorMessages