xz を削除

FreeBSD を 9.3 に upgrade する過程で、pkg をインストールすることに。
どうも FreeBSD は pkg というので ubuntu の apt-get みたいなことができるようになったようだ。

正式には 10.0 からの採用だが、/usr/sbin/pkg というのがあって、これが bootstrap としてはたらき /usr/local/sbin に pkg をインストールしてくれる。以後、pkg を実行すると /usr/local/sbin の pkg が実行される。どうやら /usr/sbin/pkg は /usr/local/sbin に pkg があるかどうかをみているらしい。あれば実行を移譲する。

とこらが、

# pkg
/usr/local/lib/liblzma.so.5: version XZ_5.0 required by /usr/lib/libarchive.so.5 not defined

という具合に /usr/sbin/pkg の bootstrap でインストールした pkg を使うとエラーになる。/usr/local/bin/pkg-static なるものも同時にインストールされるので最悪そちらを使えばなんとかなるにはなる。緊急措置として pkg-static があることを覚えておくと便利。

でこの現象は liblzma のコンフリクトにある。本来/usr/lib にある liblzma を使わないといけないのに /usr/local/lib を参照してしまうために起こるようだ。その前に恐らく、pkg_add という pkg ではない古いシステムで xz-5.0.0 をインストールしていると発生するようだ。

# pkg_info \*xz\*
Information for xz-5.0.0:

でもって、pkg_delete で削除する

# pkg_delete \*xz\*

こうすると pkg が使えるようになる。やれやれだぜ。