FreeBSD Daily Topics

2012年2月16日正規表現ライブラリPCRE(devel/pcre)アップデート注意

ports

How to upgrade devel/pcre regular expression library

正規表現ライブラリPCRE(deve/pcre)のportがアップデートされました。インストールされるライブラリlibpcre.soのメジャーバージョンが0から1へ変更されているため、多くのアプリケーションやライブラリが影響を受けます。PCREを採用しているライブラリやアプリケーションが多いためです。/usr/ports/UPDATINGには次のような説明が記載されています。

20120214:
  AFFECTS: users of devel/pcre
  AUTHOR: dougb@FreeBSD.org

  Until all dependent ports have been updated you should update pcre in
  a manner that will preserve its old shared library. For example:

  # portmaster -w devel/pcre
  or
  # portupgrade devel/pcre

portupgrade(8)を使っている場合、この方法でアップグレードが可能です。portupgrade(8)を使った場合には「libpcre.so.0」「/usr/local/lib/compat/pkg/」へコピーされ、すでにインストールされているアプリケーションやライブラリでlibpcre.so.0を使用しているものは「/usr/local/lib/compat/pkg/libpcre.so.0」を参照するようになります。⁠/usr/local/lib/compat/pkg/」は起動時にldconfig(8)に追加されるデフォルトのパスです。/etc/defaults/rc.confファイルの「ldconfig_paths」の項目に記載されています。

portmaster(8)を使っている場合には注意が必要です。UPDATINGに記載されている方法ではライブラリの退避が実施されません。portmaster(8)を使っている場合には次のように実行してみてください。⁠-w」は既存のライブラリで新しいバージョンで削除されるものを「/usr/local/lib/compat/pkg/」に退避させる設定ですが、環境変数LOCALBASEが設定されていないと機能しません。

env LOCALBASE=/usr/local portmaster -w -D -G --no-confirm pcre

UPDATINGの説明通りにportmaster(8)を実行した場合、libpcre.so.0が削除され、libpcre.so.1がインストールされた状態になっている可能性があります。この場合、既存のアプリケーションやツールの多くが動作しなくなります。関連するプログラムをすべて再構築しようとしても、ツールそのものがlibpcre.so.0に依存しているものがあり、アップデート作業はうまくいきません。一旦以前のバージョンのportを取得するなどして「libpcre.so.0」を入れなおし、作業をやり直す方が簡単です。

おすすめ記事

記事・ニュース一覧