DBICが入らなくて、CentOS5.1でPerlのRPMリビルドした
帰省するのにUbuntu入れてたノートをWindowsXPに戻して(つぶしが効くので安心)、VMwareの環境をコピーして持って帰ろうとしたら、CPUがCoreDuoでx86_64なVM環境が動かないことが判明。
VMwareの開発環境を一から作り直すことになってしまったので、どうせならCentOS5.1を入れてやることにしました。VMware用のkickstartはいつものでほぼOKなので、インストールは余裕だったんだけど、CPANからDBIx::Classをインストールしたらトラブル発生。なんかPerlに問題があるっぽい。DBIC_NO_WARN_BAD_PERL=1 したら回避できる、みたいなエラーメッセージが…
ググったら、hide-k.net#blog: CentOSでDBIC最新版を使うときの注意 に行き着きました。そう言えば、前にもそういう話をみたような気がする。CentOSとかFedoraとかのRedHat系ディストリに付いてくるPerlに当たってるパッチがマズいってことですね。
export DBIC_NO_WARN_BAD_PERL=1 するのも気持ち悪いので、FC6のperlをアップデートした - nitsujiの日記を参考にPerlのRPMリビルドに挑戦することにしました。
$ sudo yum -y install rpm-devel gdbm-devel $ sudo rpm -ivh http://ftp.riken.go.jp/Linux/centos/5.1/os/SRPMS/perl-5.8.8-10.src.rpm $ cd /usr/src/redhat/SPECS $ sudo cp perl.spec perl.spec.org $ sudo vim perl.spec $ diff -u perl.spec perl.spec.org --- perl.spec 2007-12-31 08:49:04.000000000 +0900 +++ perl.spec.org 2007-12-31 08:48:33.000000000 +0900 @@ -160,8 +160,8 @@ Patch27116: perl-5.8.8-U27116.patch Patch27391: perl-5.8.8-U27391.patch Patch27426: perl-5.8.8-U27426.patch -#Patch27509: perl-5.8.8-U27509.patch -#Patch27512: perl-5.8.8-U27512.patch +Patch27509: perl-5.8.8-U27509.patch +Patch27512: perl-5.8.8-U27512.patch Patch27604: perl-5.8.8-U27604.patch Patch27605: perl-5.8.8-U27605.patch Patch27914: perl-5.8.8-U27914.patch @@ -367,9 +367,9 @@ %patch27426 -p1 -#%patch27509 -p1 +%patch27509 -p1 -#%patch27512 -p1 +%patch27512 -p1 %patch27604 -p1 $ cd ../ $ sudo rpmbuild -ba SPECS/perl.spec
行儀悪いけど、面倒だったので/usr/srcでRPM作ってしまった。まぁ、VMwareだし。最初、lib/Net/t/hostnameのテストで「FAILED at test 1」が出たけど、自分のhostnameが/etc/hostsで解決できてなかったので修正して再挑戦したらビルド成功。
$ ll RPMS/i386 合計 17964 -rw-r--r-- 1 root root 12213889 12月 31 09:58 perl-5.8.8-10.i386.rpm -rw-r--r-- 1 root root 6084582 12月 31 09:58 perl-debuginfo-5.8.8-10.i386.rpm -rw-r--r-- 1 root root 58076 12月 31 09:58 perl-suidperl-5.8.8-10.i386.rpm
forceつけてアップグレードはせずに、perl-5.8.8 on Fedora リビルド顛末記 - daily dayflower のやり方に従って、古いRPMを削除して改めてインストールしました。CPANモジュールは$HOME以下に入れてるので、/usr/lib/perl5/にあるのはvendor_perl/だけ。
$ cd /usr/lib/perl5/ $ sudo mv vendor_perl vendor_perl.bak $ sudo rpm -ivh /usr/src/redhat/RPMS/i386/perl-5.8.8-10.i386.rpm
これでPerlのリビルドが完了。CPANライブラリも一回全部消して、改めて
$ cpan -i Class::C3::XS Class::C3 DBIx::Class
したら無事にDBICが入ったよママン!