Dr. Linux:
Komplizierte Organismen, wie Linux-Systeme es nun einmal sind, haben so ihre ganz eigenen Wehwehchen. Dr. Linux: beobachtet die Patienten in den Linux-Newsgruppen, stellt an dieser Stelle Rezepte für aktuelle Probleme aus und alternative Heilmethoden vor.
Welche Library?
Ich wollte auf meinem System ein neues Netscape installieren, bekomme aber Fehlermeldungen über fehlende Shared Libraries:
$ ./netscape-installer error while loading shared libraries: cannot open shared library: cannot load shared object file: No such file or directory
Wie bekomme ich heraus, welche Bibliotheken gebraucht werden?
Dr. Linux: Wenn Anwender Schwierigkeiten mit fehlenden Shared Libraries bekommen, sind folgende Problem-Konstellationen denkbar:
- Sie installieren eine Programm-Version, die so neu ist, dass die benötigte Bibliotheksversion (noch) nicht im System verhanden ist.
- Im Gegenteil kann das Programm so veraltet sein, dass Sie die zugehörigen Library-Versionen auf dem aktuellen System nicht finden.
- Auch der Fall, dass die fehlende Bibliothek tatsächlich nicht installiert ist, tritt auf. Um festzustellen, welche Bibliotheken fehlen, benutzt man den Befehl
ldd Programm. Das nicht startende Programm geben Sie dabei am besten mit Pfadnamen an.
Wenn Sie die ldd-Anfrage auf die Datei ./netscape-installer richten, führt das Ergebnis allerdings nicht sofort ans Ziel:
not a dynamic executable (nicht dynamisch ausführbar)
Gehen wir also etwas systematischer vor. Ein Blick ins Installer-Verzeichnis gibt folgende Auskunft:
perle@maxi:~/netscape-installer > ls -l total 172 -rw-r--r-- 1 perle users 4725 Nov 22 2000 README -rw-r--r-- 1 perle users 7671 Dec 2 2000 config.ini -rw-r--r-- 1 perle users 2206 Dec 2 2000 installer.ini -rwxr-xr-x 1 perle users 19308 Nov 22 2000 license.txt -rwxr-xr-x 1 perle users 1521 Nov 22 2000 netscape-installer -rwxr-xr-x 1 perle users 126032 Nov 22 2000 netscape-installer-bin
Zunächst einmal wollen wir wissen, um was für Dateien es sich handelt. Dazu benutzen wir das Kommando file, das Dateitypen identifiziert und das Ergebnis gleich auf der Kommandozeile ausgibt. Der Aufruf ist denkbar einfach:
perle@maxi:~/netscape-installer > file netscape-installer netscape-installer: Bourne shell script text
Es handelt sich bei dieser Datei also nicht um ein Binärprogramm, sondern um ein Shell-Skript, das den eigentlichen, übersetzten Netscape-Code erst startet. Dieser versteckt sich in netscape-installer-bin, was uns das Kommando file bestätigt:
perle@maxi:~/netscape-installer > file netscape-installer-bin netscape-installer-bin: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), stripped
Dass sich hinter ausführbaren Dateien ein Skript verbirgt, dessen Inhalt Sie sich mit einem beliebigen ASCII-Editor ansehen können, kommt recht häufig vor. Bei der Auflistung eines Verzeichnisses geht jedoch durchaus nicht sofort eindeutig hervor, ob es sich um ein Skript bzw. ein Binärprogramm handelt, da Dateinamenerweiterung wie z. B. .bat für Linux-Skripte unüblich sind. Nur manchmal werden in der Skriptsprache Perl geschriebene Programme mit .pl und Shell-Skripte mit .sh gekennzeichnet.
Bleibt noch zu demonstrieren, was der Befehl ldd ausgibt, wenn er auf ein kompiliertes Programm angewendet wird:
perle@maxi:~ > ldd ~/netscape-installer/netscape-installer-bin
libgtk-1.2.so.0 => /usr/lib/libgtk-1.2.so.0 (0x40025000)
libgdk-1.2.so.0 => /usr/lib/libgdk-1.2.so.0 (0x40155000)
libgmodule-1.2.so.0 => /usr/lib/libgmodule-1.2.so.0 (0x4018c000)
libglib-1.2.so.0 => /usr/lib/libglib-1.2.so.0 (0x4018f000)
libdl.so.2 => /lib/libdl.so.2 (0x401b4000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x401b8000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x401c6000)
libnsl.so.1 => /lib/libnsl.so.1 (0x402a9000)
libutil.so.1 => /lib/libutil.so.1 (0x402bf000)
libresolv.so.2 => /lib/libresolv.so.2 (0x402c2000)
libm.so.6 => /lib/libm.so.6 (0x402d5000)
libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0x402f4000)
libpthread.so.0 => /lib/libpthread.so.0 (0x4033c000)
libc.so.6 => /lib/libc.so.6 (0x40352000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x4046f000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Fehlt auf Ihrem System z. B. die libm.so.6, so liefert ldd die Meldung => not found anstelle des Pfades zur Library:
[…]
libresolv.so.2 => /lib/libresolv.so.2 (0x402c2000)
libm.so.6 => not found
libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2 (0x402f4000)[…]Ich glotz' TV
Ich benutze Xawtv zum Fernsehen auf meinem Linux-System. Nun hätte ich die TV-Programme gerne in einer bestimmten Reihenfolge im Channel Window angezeigt. (Das ist das Fenster, das die verfügbaren Programme zur Auswahl per Mausklick präsentiert.) Mit dem Channel Editor ist das eine mühselige Arbeit, da alle Details wie Kanäle und Sendernamen nochmal eingegeben werden müssten. Eine Konfigurationsdatei namens Xawtv.config o. ä. kann ich im System nicht finden.
Dr. Linux: Wenn ein Linux-Anwender eine Software individuell konfiguriert hat, liegt die zugehörige Konfigurationsdatei (fast) immer in seinem Home-Verzeichnis. Normalerweise werden solche Dateien und Verzeichnisse als Dot-Dateien angelegt. Das sind Dateien/Verzeichnissse, deren Namen ein Punkt (.) vorangestellt ist. Sie werden auch als versteckte Dateien bezeichnet, da sie in Datei-Managern, aber auch von ls nicht ohne Weiteres angezeigt werden.
Wenn Sie auf einer Kommandozeile den Befehl ls ("(auf)listen") mit der Option a wie alle absetzen, bekommen Sie auch die Punkt-Dateien präsentiert. Das Flag l liefert zusätzlich eine lange Ausgabe, die mehr Informationen bietet.
perle@maxi:~ > ls -al total 1876 drwx—— 44 perle users 4096 Jul 2 16:25 . drwxr-xr-x 7 root root 4096 Jun 26 14:11 ..[…] -rw-r--r-- 1 perle users 1090 Jul 2 15:06 .xawtv[…]
Natürlich gibt es auch bei allen Datei-Managern eine Möglichkeit, sich die versteckten Dateien anzeigen zu lassen. Im Konqueror von KDE 2.1.x geht das beispielsweise über Ansicht / Versteckte Dateien anzeigen (Abbildung 2).
Die Konfigurationsdatei für Xawtv heißt schlicht .xawtv und lässt sich in einen beliebigen Editor laden.
Ihr Aufbau ist einfach und übersichtlich. Hinter einigen Konfigurationanweisungen stehen Sender und Sendeplätze, die Sie bereits eingerichtet haben, untereinander. Mittels Editor-Funktionen wie Ausschneiden und Einfügen erledigen Sie das Ändern der Programm-Reihenfolge sehr schnell.
Bei dieser Gelegenheit lassen sich auch alle "überflüssigen" Sender auskommentieren. (Listing 1 zeigt ein Beispiel.)
Wenn Sie diese irgendwann doch wieder aktivieren möchten, entfernen Sie einfach das Kommentarzeichen (#), und der Sender steht zur Verfügung, ohne dass Sie einen lästigen Suchlauf starten bzw. Xawtv neu konfigurieren müssen.
Listing 1
Auszug aus der
~/.xawtv[…] [defaults] norm = PAL input = Television capture = over[…] [BBC] channel = SE14 [CNN] channel = SE12 # Kommentare, denen ein # vorangestellt # ist, werden nicht weiter beachtet. # #[DSF] #channel = S23 [PHOENIX] channel = SE19 [n-tv] channel = SE5 [N24] channel = S25[…]



