BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Fehlende Shared-Libraries identifizieren

Mit Hilfe von libchk können Programme identifiziert werden, die gegen Shared-Libraries gelinkt sind, welche jedoch nicht mehr existieren. Im FreeBSD Portbaum findet man libchk unter sysutlis/libchk:

# cd /usr/ports/sysutils/libchk && make install clean

Standardmässig durchsucht libchk zur Zeit auch noch Verzeichnisse unter dem Verzeichnis /usr/X11R6, welches auf neueren Systemen nach /usr/local gelinkt ist. Dies kann mit der -x Option ausgeschlossen werden. Führt man libchk nun aus, werden alle Programme angezeigt, bei welchen Shared-Libraries fehlen. Auch werden dabei alle Shared-Libraries aufgelistet, welche von keinem Programm benötigt werden. Jedoch sollten diese nicht einfach deinstalliert werden ohne dass vorher genau überprüft wird, dass diese wirklich nicht mehr gebraucht werden.

# libchk -x /usr/X11R6
Will look into:
        /bin
        /lib
        /sbin
        /usr/bin
        /usr/games
        /usr/lib
        /usr/libexec
        /usr/local/bin
        /usr/local/lib
        /usr/local/libexec
        /usr/local/sbin
        /usr/sbin
Unresolvable link(s) found in: /usr/lib/libssh.so.3
        libasn1.so.8
        libroken.so.8
        libkrb5.so.8
Unresolvable link(s) found in: /usr/local/bin/mutt
        libasn1.so.8
        libroken.so.8
        libkrb5.so.8
Unreferenced library: /usr/local/lib/gcc-4.2.3/libffi.so.4
Unreferenced library: /usr/local/lib/gcc-4.2.3/libgfortran.so.2
Unreferenced library: /usr/local/lib/gcc-4.2.3/libgomp.so.1
Unreferenced library: /usr/local/lib/gcc-4.2.3/libmudflap.so.0
Unreferenced library: /usr/local/lib/gcc-4.2.3/libmudflapth.so.0
Unreferenced library: /usr/local/lib/gcc-4.2.3/libobjc.so.2
Unreferenced library: /usr/local/lib/gcc/i386-portbld-freebsd7.1/3.4.6/libg2c.so.0

Das Fehlen der Shared-Libraries kann danach mit ldd(1) verifiziert werden und diese können danach gegebenenfalls wieder installiert werden:

# ldd /usr/local/bin/mutt
/usr/local/bin/mutt:
        libncursesw.so.5.6 => /usr/local/lib/libncursesw.so.5.6 (0x2810b000)
        libgssapi.so.8 => /usr/lib/libgssapi.so.8 (0x28130000)
        libkrb5.so.8 => not found (0x0)
        libasn1.so.8 => not found (0x0)
        libcrypto.so.4 => /lib/libcrypto.so.4 (0x28147000)
        libroken.so.8 => not found (0x0)
        libcrypt.so.3 => /lib/libcrypt.so.3 (0x2823f000)
        libcom_err.so.3 => /usr/lib/libcom_err.so.3 (0x28258000)
        libssl.so.4 => /usr/lib/libssl.so.4 (0x2825a000)
        libz.so.3 => /lib/libz.so.3 (0x28289000)
        libintl.so.8 => /usr/local/lib/libintl.so.8 (0x2829a000)
        libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x282a3000)
        libc.so.6 => /lib/libc.so.6 (0x28398000)
        libtinfow.so.5.6 => /usr/local/lib/libtinfow.so.5.6 (0x2847a000)

Mehr Informationen zu libchk findet man in der Manpage libchk(1).

Comments (1)  Permalink