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).