okochangの馬鹿でありがとう

ふらふら適当に世間を生きる日々でございます

CentOS5.5でpuppet2.6.4のrpmを作成する

Puppetを使用する場合、使用するバージョンやインストール方法はどんな方法が良いかなと悩んだりしています。
RubyGemsを使ったインストール方法を覚えておけば、どんなディストリビューションでも使えて便利そうです。
ただ、個人的に一番使い慣れたディストリビューションCentOSなので、rpmで管理したいという気持ちもあります。 そんな悩みを持ちつつ、とりあえずrpmを作成したので手順を残しておこうと思います。
参考にしたページはこちらで、手順はほんとにそのままで申し訳ないくらいです。

    • rpmbuildに必要なパッケージをインストールします
# yum -y groupinstall "Development Tools"
# yum -y groupinstall "Development Libraries"
    • その他puppetのインストールに必要なパッケージをインストールします
# cd /usr/local/src/
# wget http://ftp.iij.ad.jp/pub/linux/fedora/epel/5Server/i386/augeas-libs-0.7.4-1.el5.i386.rpm
# wget http://ftp.iij.ad.jp/pub/linux/fedora/epel/5Server/i386/ruby-augeas-0.3.0-1.el5.i386.rpm
# rpm -ivh ./augeas-libs-0.7.4-1.el5.i386.rpm ./ruby-augeas-0.3.0-1.el5.i386.rpm
    • /usr/src/redhat/SOURCESディレクトリに移動してfacterとpuppetのソースファイルをダウンロード
# cd /usr/src/redhat/SOURCES/
# wget http://puppetlabs.com/downloads/puppet/puppet-2.6.4.tar.gz
# wget http://puppetlabs.com/downloads/facter/facter-1.5.8.tar.gz
    • ダウンロードしたファイルを展開します
# tar zxvf ./puppet-2.6.4.tar.gz
# tar zxvf facter-1.5.8.tar.gz
    • 必要なパッチがあるか確認します
# grep ^patch facter-1.5.8/conf/redhat/facter.spec
# grep ^patch puppet-2.6.4/conf/redhat/puppet.spec
patch -p1 < conf/redhat/rundir-perms.patch
    • パッチファイルを探してSOURCESディレクトリに移動させます
# find . -name rundir-perms.patch |grep redhat
./puppet-2.6.4/conf/redhat/rundir-perms.patch
# cp ./puppet-2.6.4/conf/redhat/rundir-perms.patch ./
    • バージョン情報を確認します
# grep ^Version ./facter-1.5.8/conf/redhat/facter.spec
Version: 1.5.5
# grep ^Version ./puppet-2.6.4/conf/redhat/puppet.spec
Version:        2.6.0
    • バージョン情報をダウンロードしたものと合わせて%changelogを編集します
# vi ./facter-1.5.8/conf/redhat/facter.spec
      8 Version: 1.5.8
     52 %changelog
     53 * Mon Jan 17 2011 oko_chang <okochang@example.com> - 1.5.8-1
     54 - Update to 1.5.8

# vi ./puppet-2.6.4/conf/redhat/puppet.spec
      8 Version:        2.6.4
    225 %changelog
    226 * Mon Jan 17 2011 oko_chang <okochang@example.com> - 2.6.4-1
    227 - Update to 2.6.4
    • 編集したspecファイルをSPECSディレクトリにコピーします
# cp ./facter-1.5.8/conf/redhat/facter.spec ../SPECS/
# cp ./puppet-2.6.4/conf/redhat/puppet.spec ../SPECS/
# ls ../SPECS/
facter.spec  puppet.spec
    • 不要なディレクトリを削除します
# rm -rf ./facter-1.5.8
# rm -rf ./puppet-2.6.4
    • SPECSディレクトリに移動してfacterをbuildします
# cd ../RPMS/i386/
# rpm -ivh ./puppet-2.6.4-1.i386.rpm puppet-debuginfo-2.6.4-1.i386.rpm puppet-server-2.6.4-1.i386.rpm 

以上でrpm作成は終わりです。 FacterもPuppetもすぐにbuildが終わる事にびっくり!
んー、でもやっぱり色々なディストリビューションで使える事を考えるとRubyGemsが便利そうだなー。