先日、cpan-dependencyスクリプトを使用したRPMの作成方法を記事にしたのですが、YAPC::Asia 2009でCPAN::Packagerというcpan-dependencyを参考にさらにパワーアップしたものが発表されていたのを知りました。
cpan-dependencyでは依存関係関連やMakefile.PLではなくてBuild.PLを使用している場合などなど、いろいろ導入するのは大変でちょっと挫折してました。
今回、CPAN::Packagerを使用したところ比較的導入しやすかったです。
参考サイトに従い、インストールを行いました。
まず最初にrpm-buildパッケージに含まれる/usr/lib/rpm/perl.reqを修正します。
これを修正しないとモジュール内でuseされているモジュールに関してRequireが張られてしまいます。
実はこれで2、3日はまってました。
# there is no easy way to find out if a file named systeminfo.ph
# will be included with the name sys/systeminfo.ph so only use the
# basename of *.ph files
($module =~ m/\.ph$/) && next;
$require{$module}=$version;
$line{$module}=$_;
修正前
# there is no easy way to find out if a file named systeminfo.ph
# will be included with the name sys/systeminfo.ph so only use the
# basename of *.ph files
($module =~ m/\.ph$/) && next;
#$require{$module}=$version;
#$line{$module}=$_;
修正後
あとはCPAN::Packagerをインストールします。
gitのリポジトリもありますが、これ自体が依存しているモジュールが多いのでCPANからインストールするのが楽です。
# cpan -i CPAN::Packager
configファイルはgitからとってきます。
# git clone git://github.com/dann/p5-cpan-packager.git
# cd p5-cpan-packager
今後、conf/config-rpm.yamlを使用します。
きっと随時updateがかかると思うので、gitの管理下に入れておくのがベターだと思います。
最後に、設定ファイルのリポジトリをどこかのCPANミラーに設定するかmini CPANに設定します。
あとは、下記コマンドを実行すれば~/.cpanpackager以下にrpmが作成されます。
# cpan-packager --module DBIx::Class --builder RPM --conf ~/p5-cpan-packager/conf/config-rpm.yaml
DBIx::ClassとCatalyst::Develのrpmを作成しましたが、Catalystは少しほかの依存モジュールを先にrpm化しないとダメだったりしましたが基本的にはうまくいきました。
これでrpm化も手軽にできるようになりそうです。