FreeBSD 5.xは最小構成のインストールでもlang/perl5のパッケージがインストールされるように出来ています。
長いこと使っていると幾つものPerlモジュールを追加していくことになりますが、単純にlang/perl5を削除して、 lang/perl5.8を入れても、 後から追加した各種モジュールは/usr/local/lib/perl5/site_perl/5.6.1配下にあるため、 DBI等色々使えなくなって、例えばこのサイトで使用しているMovableTypeも動作しなくなります。
本エントリではPerlの追加モジュールはportsから全てインストールしている方向けのちょっと無理やりなperlアップグレード方法を紹介します。
pkg_delete -f perl-5.6.1_15で強制的にperl5.6.1を削除します。
次にportinstall lang/perl5.8で新しいperlを入れます。
一応入れ終わったらuse.perl portを実行して/etc/make.confを更新しましょう。
最後にpkgdb -Fでperl5.6.1を見ているパッケージ達を5.8.5に変更してあげましょう。
基本的にports/packageから入れたperlモジュールは名前に「p5-」が含まれていますので、 そのportsを再インストールします。以下のコマンドを打ち込んでください。
# setenv FORCE_PKG_REGISTER
# portupgrade -f `pkg_info | grep p5- | awk '{print $1}'`
これで、 大体のperlモジュールが/usr/local/lib/perl5/site_perl/5.6.1から5.8.5に移動するはずです。
他にもmrtgやnet-snmp、ImageMagickにもperlモジュールが含まれているので、 それらは手動でportupgrade -fしてあげます。 この辺の移行が足りないperlモジュールはsiteperl/5.6.1配下に残っているファイルから想像して手動で入れてください。
この方法は途中で止めてしまいましたが、Officialな更新の仕方みたいです。
ports/packageでperlを必要としているパッケージ全てをリビルドすれば完全に移行できますが、 その分リビルドの時間もかかりますし、perlモジュールを持たないものまでリビルドしてしまいます。
# portupgrade -f `(pkg_info -R perl-5.8.5 |tail +4; find /usr/local/lib/perl5/site_perl/5.8.5 -type f -print0 | xargs -0 pkg_which -fv | sed -e '/: ?/d' -e 's/.*: //')|sort -u`
一応上記コマンドでperlを使用しているパッケージ全てを更新するみたいです。
とりあえずMovableTypeがまともに動けばいいやーの気持ちで上記作業を行いましたが、今のところ問題なく動いています。
今後perlの5.8系が新しくなったときはsiteperl/5.8.5の内容をコピーするだけで問題ないかなと思っています。 また、新しいVersionが出たらこのエントリに追記予定です。
投稿者 yotan : 2005年1月 4日 16:39| トラックバック(0)※コメント内にURLを書くとSPAM扱いとなります。2ch風に表記はOKです


