[CPAN][RPM] cpanspecはvendor_perlにinstallする

cpanspec試す

http://d.hatena.ne.jp/woremacx/20070804/1186202588

を見て、cpanspecを使ってみた。

cpanspec --follow Compress::Zlib

dependencyも考慮して、CPAN moduleをdownloadしてSPEC fileも作ってくれる。

とりあえず、downloadしたmodule群を強制RPM

find . -name "*.gz" -exec cpanspec --force --build {} \;

dependencyが考慮されていないので当然失敗するものもあるので後は個別対応
specファイルの編集が必要なときはrpmbuild使う。

install先ではまる

作業中に気がついたのだが、
cpanとcpanspecで作成したRPMとでPerl ModuleのInstall Folderが異なる。

perldoc -l Compress::Raw::Zlib

/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi/Compress/Raw/Zlib.pm

rpm -ql perl-Compress-Raw-Zlib

/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/Compress/Raw/Zlib.pm

site_perlの方が優先されるので、RPMでinstallされたmoduleが反映されなくてはまった。

本来どうすべきなのだろう。

追記

dag Repositoryとかにあるperl moduleもvendor_perlにインストールさているし、
RPM化の際に無理矢理site_perlにするのも筋が良くなさそうだ。

結局、CPAN installとyum installの混在はだめで、
気合いでマシン全体でCPAN installをしないようにするしかないか・・・



cpan installの代わりにcpan rpminstallとかすると勝手にRPM化してInstallしれくれるといいのになぁ・・

追記2

CPANモジュールのアンインストール - ヒルズで働く@robarioの技ログ

を利用するとcpan installで入れたmoduleのuninstallができることが分かった。
RPM moduleへの置き換え時にcpan-uninstallを必ず実行するようにすれば、
問題にならなそうだ。

無理矢理site_perlにinstallするには

cpanspecは、perl ./Build.PL installdirs=vendor をやっているだけ。

以下でsite_perlにinstallするcpanspecになる。1.73で確認。

perl -pe 's/vendor/site/g;' /usr/bin/cpanspec > /usr/bin/cpanspec-site

修正箇所は4行程度。

どうしてもCPANからinstallしたmoduleが優先されて困る場合は、
これでsite_perlにinstallできる。

ただ、全部のcpan moduleを自分でRPM化するのは面倒なので、
普通はdag repositoryを活用することになると思うのだが、
CPAN moduleとdag repositoryの間では同じ問題が発生するので注意。