2005/1/ 4

Perlを5.6.1から5.8.5に上げる(FreeBSD)

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アップグレード方法を紹介します。

■lang/perl5を消して、lang/perl5.8を入れる

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に変更してあげましょう。

■perlモジュールの強制更新

基本的に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)

この方法は途中で止めてしまいましたが、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です










名前、アドレスを登録しますか?