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