CPANモジュールをRPM化する

CentOS, Fedora 系の Linux には、cpan2rpm というコマンドがあり、これを使
うことで、CPAN モジュールを RPM 化できるようです。依存モジュールを書くこ
とで依存モジュールも一緒にインストールしてくれる素敵仕様です。

コマンドのインストールは以下のように行います。

$ wget http://search.cpan.org/CPAN/authors/id/E/EC/ECALDER/cpan2rpm-2.028.tar.gz
$ tar xvzf cpan2rpm-2.028.tar.gz
$ cd cpan2rpm-2.028
$ perl Makefile.PL
$ make
$ make install

実際の RPM は以下のように作ります。当然ここに書いた依存モジュールも RPM
化しないと駄目です。

$ cpan2rpm Catalyst::Runtime \
--require 'perl(Class-Accessor)' \
--require 'perl(Class-Data-Inheritable)' \
--require 'perl(Class-Inspector)' \
--require 'perl(CGI-Simple)' \
--require 'perl(Data-Dump)' \
--require 'perl(File-Modified)' \
--require 'perl(HTML-Parser)' \
--require 'perl(HTTP-Body)' \
--require 'perl(HTTP-Request-AsCGI)' \
--require 'perl(libwww-perl)' \
--require 'perl(Module-Pluggable)' \
--require 'perl(NEXT)' \
--require 'perl(Path-Class)' \
--require 'perl(Text-SimpleTable)' \
--require 'perl(Time-HiRes)' \
--require 'perl(Tree-Simple)' \
--require 'perl(Tree-Simple-VisitorFactory)' \
--require 'perl(URI)' \
--require 'perl(Text-Balanced)'
--make-no-test

$ cpan2rpm Template-Toolkit \
--require 'perl(Template::Stash::XS)' \
--require 'perl(AppConfig)' \
--require 'perl(File::HomeDir)' \
--make-no-test

$ cpan2rpm AppConfig
$ cpan2rpm CGI-Simple
$ cpan2rpm Class-Accessor
$ cpan2rpm Class-Data-Inheritable
$ cpan2rpm Class-Inspector
$ cpan2rpm Data-Dump
$ cpan2rpm File-HomeDir
$ cpan2rpm File-Modified
$ cpan2rpm HTML-Parser
$ cpan2rpm HTTP-Body
$ cpan2rpm HTTP-Request-AsCGI
$ cpan2rpm Module-Pluggable
$ cpan2rpm NEXT
$ cpan2rpm Path-Class
$ cpan2rpm Template::Stash::XS
$ cpan2rpm Text-Balanced
$ cpan2rpm Text-SimpleTable
$ cpan2rpm Time-HiRes
$ cpan2rpm Tree-Simple
$ cpan2rpm Tree-Simple-VisitorFactory
$ cpan2rpm URI
$ cpan2rpm libwww-perl

ちなみに「Can't locate object method "interpolate" via package "Pod::Text" at /usr/bin/cpan2rpm line xxx.」と表示されたら、/usr/bin/cpan2rpm の Pod::Text を Pod::Parser に書き換えるとうまくいくようです。