ports のライブラリの動的リンクを点検する2008年03月20日 14時44分52秒

ports に入っているライブラリが更新されたからといって、必ずしもそのライブラリを使うプログラムも作り直さないといけないわけでもない。ライブラリの提供する .so ファイルが残っていれば、バイナリの互換性は保たれる。そのため、ports を更新するツールの類は .so ファイルを compat に移す。

もちろん、ライブラリが更新される度に、新しいライブラリの恩恵を受けるべく、全てを作り直す事も選択肢のうちの一つだ。しかし、それに伴って相応のコンパイルからインストールの時間が掛かる。

長い間 ports を更新し続けていると、インストールされている物が正しく動くか点検したくなる。間違えて .so ファイルが消されてしまったりする事もあるかも知れない。動的ライブラリの点検は sysutils/bsdadminscripts に入っている pkg_libchk を用いて出来る。

pkg_libchk は全ての ports が最新のライブラリにリンクするのを好ましいとするようで、pkg_libchk -n とやらないと compat に入っているライブラリでも警告を出してくる。

# pkg_libchk -n
diablo-jdk-1.5.0.07.01_9: /usr/local/diablo-jdk1.5.0/demo/jvmti/heapTracker/lib/
libheapTracker_g.so misses libjava_crw_demo_g.so
diablo-jdk-1.5.0.07.01_9: /usr/local/diablo-jdk1.5.0/demo/jvmti/mtrace/lib/libmt
race_g.so misses libjava_crw_demo_g.so
diablo-jdk-1.5.0.07.01_9: /usr/local/diablo-jdk1.5.0/jre/lib/i386/libJdbcOdbc.so
misses libodbcinst.so
diablo-jdk-1.5.0.07.01_9: /usr/local/diablo-jdk1.5.0/jre/lib/i386/libJdbcOdbc.so
misses libodbc.so
jdk-1.5.0.14p8,1: /usr/local/jdk1.5.0/demo/jvmti/heapTracker/lib/libheapTracker_
g.so misses libjava_crw_demo_g.so
jdk-1.5.0.14p8,1: /usr/local/jdk1.5.0/demo/jvmti/mtrace/lib/libmtrace_g.so misse
s libjava_crw_demo_g.so
jdk-1.5.0.14p8,1: /usr/local/jdk1.5.0/jre/lib/i386/libJdbcOdbc.so misses libodbc
inst.so
jdk-1.5.0.14p8,1: /usr/local/jdk1.5.0/jre/lib/i386/libJdbcOdbc.so misses libodbc
.so
jdk-1.6.0.3p4: /usr/local/jdk1.6.0/jre/lib/i386/libJdbcOdbc.so misses libodbcins
t.so
jdk-1.6.0.3p4: /usr/local/jdk1.6.0/jre/lib/i386/libJdbcOdbc.so misses libodbc.so
openoffice.org-2.2.0: /usr/local/openoffice.org-2.2.0/program/libofficebean.so m
isses libjawt.so

手元では、JDK 関連で、いくつかのライブラリが足りないようだ。JDBC などは使わないので気にはなるが、現在のところ実質的には問題は出ていない。