CPAN::PackagerでのRPM作成とインストール

HTTP::Engine, HTTP::Router, Mouseなど、angelosで必要となるモジュールが自動でrpm化できるようになったので、0.01をリリースしました。まだ、依存関係を修正するconfigの設定をほとんどしていないので、色々とインストールできないモジュールなどもあるかもしれませんが、そこらは少しずつ追加していこうかなと思ってます。

CPAN::Packagerのsetup

事前の処理

rpmbuild で Requires の処理してる部分はコメントアウト。use, requireしているファイルを自動でrpmbuildがrequiresに加えてしまうため。

以下のファイルの224, 225行目をコメントアウト
/usr/lib/rpm/perl.req

#$require{$module}=$version; 
#$line{$module}=$_; 

See also:
http://trac.mizzy.org/public/wiki/HowToRpmizeCpanModules

CPAN::Packagerのインストール
cpan CPAN::Packager

RPMの作成

cpan-packagerでRPM作成

sudo bin/cpan-packager --module Mouse  --builder RPM --conf conf/config.yaml

configはhttp://github.com/dann/cpan-packager/tree/master からとってください。割と頻繁にupdateかけることになると思います。

yumレポジトリ構築

local repoの作成
sudo mkdir -p /share/CentOS/5/local/i386/RPMS 

cpan packagerで作ったrpmのコピー

cp /tmp/cpanpackager/rpm/*.rpm /share/CentOS/5/local/i386/RPMS
sudo createrepo -v /share/CentOS/5/local/i386/RPMS
local repoの設定
sudo vim /etc/yum.repos.d/centos-local.repo

以下の内容を。

[local]
name=CentOS local $releasever - $basearch
baseurl=file:///share/CentOS/5/local/i386/RPMS/
enabled=1
gpgcheck=0
localレポのパッケージが表示されているか確認。
yum list |grep perl

これでRPMの依存関係に従って、RPM群がインストールされる。

レポジトリの更新

rpmをupdateしたときは、以下のようなスクリプトrpmをコピーして更新。

#!/bin/sh
sudo cp /tmp/cpanpackager/rpm/*.rpm /share/CentOS/5/local/i386/RPMS
sudo createrepo -v /share/CentOS/5/local/i386/RPMS
sudo yum update

yumレポジトリからのインストール

sudo yum -y install perl-Mouse

Advanced

CPAN::Miniのsetup

rpm作るときは、minicpanを優先するようにしておいたほうが良いです。そうすれば、tarballをlocalからとってこれます。

sudo cpan CPAN::Mini
minicpan -r http://ftp.funet.fi/pub/languages/perl/CPAN/ -l ~/minicpan

minicpanを優先

$ sudo cpan
cpan> o conf urllist unshift file:///home/dann/minicpan
cpan> o conf commit
cpan> q

今後のTODO

  • configの更新
    • ここが今後の課題ですね。自動でビルドするには、configを地道にupdateしていくしかないかなと。
  • Debパッケージの作成方法のまとめ