RPM,SRPM,SPECについて

RPM,SRPM,SPECについてなんとなくは分かっているが、自信もって人に説明できるレベルではないので、きちんと調べてみた。
http://www.itmedia.co.jp/enterprise/0309/26/epn02.html
http://www.stackasterisk.jp/tech/systemManagement/rpm01_01.jsp

RPM
  • コンパイル済のファイルが入ったバイナリパッケージ
  • アーキテクチャに適合した.rpmファイルを使う必要がある
  • 形式は(パッケージ名)-(バージョン)-(リリース番号).(アーキテクチャ).rpm
SRPM
  • Source RPM
  • RPMを作成するために必要なファイル一式(spec, tarballなど)が入ったパッケージ
  • SRPMがあれば環境にあわせたRPMがつくれる
SPEC
  • PRMを作成するために必要な情報が定義されたファイル
  • ゼロから書くのはなかなか大変

現時点では

  1. RPMが入手可能でオプション調整が不要であれば、RPMパッケージを使う
  2. RPMが入手できない、あるいはチューニングしたい時はSRPMからspecファイルを取り出し、チューニング
  3. それもダメならtarball展開し、make時にごにょごにょして、checkinstallでRPM化
  4. いよいよダメなら諦めて、specファイルを書く

という順序がいいんじゃないかと思っている

subversionのsrc.rpmでいろいろやってみる

まずはダウンロードする

cd /usr/src/redhat/SRPMS
wget http://www.oss4aix.org/download/SRPMS/subversion/subversion-1.6.9-1.src.rpm

rpm -iでSOURCESにtarball、SPECにspecファイルが展開される。インストールはされない。

rpm -ivh subversion-1.6.9-1.src.rpm
ll /usr/src/redhat/*/subversion*

-rw-r--r-- 1 root root 5478554  122  2010 /usr/src/redhat/SOURCES/subversion-1.6.9.tar.bz2
-rw-r--r-- 1 root root     984  211  2010 /usr/src/redhat/SOURCES/subversion-1.6.9.tar.bz2.asc
-rw-r--r-- 1 root root    5912  211  2010 /usr/src/redhat/SPECS/subversion-1.6.9-1.spec
-rw-r--r-- 1 root root 5478603  211  2010 /usr/src/redhat/SRPMS/subversion-1.6.9-1.src.rpm

rpmbuild --rebuildでRPMが作成できる

rpmbuild --rebuild subversion-1.6.9-1.src.rpm

実際は依存パッケージを先にインストールする必要があるが。

rpmbuildについて

RPMのbuild専用コマンドがrpmbuild。おおまかに言って使い方は3通り。

rpmbuild -b* [SPECFILE]
rpmbuild -t* [TARBALL]
rpmbuild --rebuild [SRC Package]
  • バイナリRPMだけbuildする
rpmbuild -bb [SPECFILE]
  • バイナリRPM, ソースRPM両方をbuildする
rpmbuild -ba [SPECFILE]

まとめ

SRPM, SPEC, rpmbuildの概要がわかった。あまりまとまってないけど。