RPM Packager
たくさんのサーバを同じ環境に保つためには、マシン1台ずつcpan installは現実的じゃなく、RPMにしてyum installするのが吉。
CPANからRPMつくる方法は
- cpan2rpm
- flute
などがあるみたいだけど、どうやらcpan2rpmのほうがメジャーな様子。ということでローカルのVMWare環境で試してみることにする。
インストール
http://sourceforge.net/projects/cpan2rpm/files/を見ると、cpan2rpm-2.027-1.noarch.rpmがあるのでrpmでインストールすることに。
sudo su - wget http://sourceforge.net/projects/cpan2rpm/files/cpan2rpm/2.027/cpan2rpm-2.027-1.noarch.rpm/download rpm -ivh cpan2rpm-2.027-1.noarch.rpm エラー: 依存性の欠如: rpm-build は cpan2rpm-2.027-1.noarch に必要とされています
ふむ。rpm-buildをyumからいれよう。yumリポジトリはid:kotaroito2002:20100621のように設定されている。
yum install rpm-build
cpan2rpmを再度インストール
rpm -ivh cpan2rpm-2.027-1.noarch.rpm
CPANモジュールを入れてみる
試しにlibwww-perlをインストールしてみる。
cpan2rpm -i libwww-perl (中略) -- module: libwww-perl -- Using cached URL: http://search.cpan.org//CPAN/authors/id/G/GA/GAAS/libwww-perl-5.836.tar.gz Tarball found - not fetching Metadata retrieval Tarball extraction: [/usr/src/redhat/SOURCES/libwww-perl-5.836.tar.gz] Unable to build module, the following dependencies have failed: IO::Uncompress::Inflate >= 0 IO::Uncompress::Gunzip >= 0 URI >= 1.10 IO::Compress::Gzip >= 0 IO::Uncompress::RawInflate >= 0 Compress::Raw::Zlib >= 0 IO::Compress::Deflate >= 0 HTML::Tagset >= 0 HTML::Parser >= 3.33 Stopped at /usr/bin/cpan2rpm line 492. -- Done --
/usr/src/redhat/SOURCESにtarボールがダウンロードされていること、依存関係があるためにRPMのbuildに失敗したことが分かる。
ということでもう少し簡単なものを、方法変えてやってみる。
cd /usr/src/redhat/SOURCES wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/URI-1.54.tar.gz cpan2rpm -no-sign -i URI-1.54.tar.gz
無事できた〜。もういっちょ。こんどは-iオプションなしで。
cpan2rpm --no-sign HTML::Tagset Tarball extraction: [/usr/src/redhat/SOURCES/HTML-Tagset-3.20.tar.gz] Generating spec file SPEC: /usr/src/redhat/SPECS/HTML-Tagset.spec RPM: /usr/src/redhat/RPMS/noarch/perl-HTML-Tagset-3.20-1.noarch.rpm SRPM: /usr/src/redhat/SRPMS/perl-HTML-Tagset-3.20-1.src.rpm
SPEC, PRM, SRPMがこんな感じでつくられる。-iを入れるとさらにrpm -iされるってことですね。
yumレポジトリをつくる
ローカルにyumレポジトリをつくって、そこからyum groupinstallしたいので。まずはcreaterepoのインストール。
yum install createrepo
http経由で見えるように、/var/www/htmlにディレクトリ作成する。名前は適当。そしてperlモジュールをコピーする。
mkdir -p /var/www/html/centos/5/perl cp /usr/src/redhat/RPMS/*/perl-*.rpm /var/www/html/centos/5/perl/ chown apache. /var/www/html/centos/5/perl/*
groupinstallしたいのでxml生成するyum-groups-managerが欲しい
yum install yum-utils
man yum-groups-manager
さっそくyum-groups-managerを使ってみる
yum-groups-manager -n perl-test --id perl-test --description perl modules --mandatory perl-URI --save /var/www/html/centos/5/perl/groups.xml
リポジトリを作成する
cd /var/www/html/centos/5/perl createrepo -g groups.xml . ls -l repodata/
yumのリポジトリ設定
cd /etc/yum.repos.d/ vi Perl-Test.repo [perl-test] name=perl-test - Test baseurl=http://mdev1/centos/5/perl enabled=1 gpgcheck=0
perl-testリポジトリのみ有効にして、yumからインストールしてみる
yum --disablerepo=* --enablerepo=perl-test search perl-List-MoreUtils yum --disablerepo=* --enablerepo=perl-test install perl-List-MoreUtils Installed: perl-List-MoreUtils.i386 0:0.25_02-1 Complete!
やったー、成功!!
さらにごにょごにょgroup.xmlファイルに追加してから
yum -y --disablerepo=* --enablerepo=perl-test groupinstall perl-test
これも成功!!!念願のRPM作成 -> yum installができた!すごくレベルが上がった気分。