Vine Linux 3.0以降で採用されているrpm-4.xではパッケージのビルドはrpmbuildコマンドを利用するようになりました。過去との互換性のためVine Linuxでは、rpmコマンドも利用できるようになっていますが、将来的に廃止の予定であるため今後はrpmbuildコマンドをお使いください。
specファイルを書いた後は、以下のようにして、rpmパッケージをつくります。
rpmとsrpmをつくりたいときには、(build all)
$ rpmbuild -ba hoge.spec
とりあえず、rpmだけつくりたいときは(build binary)
$ rpmbuild -bb hoge.spec
srpmだけつくりたいときは(build srpm)
$ rpmbuild -bs hoge.spec
rpmもsrpmもつくらずに、パッケージの展開だけしてみる (%buildの前までを実行)(build prep、%prepが実行される。)
$ rpmbuild -bp hoge.spec
これは、パッチをつくるときに便利です。
rpmもsrpmもつくらずに、ちょっとmakeがうまくいくかテスト (build compile、%prep,%buildが実行される。)
$ rpmbuild -bc hoge.spec
--short-circuitオプションをつけると
%build 以前の部分(%prep) を省略して %buildが実行されます。
$ rpmbuild --short-circuit -bc hoge.spec
rpmもsrpmもつくらずに、ちょっとinstallまでうまくいくかテスト (build install、%prep,%build,%install,%checkが実行される。)
$ rpmbuild -bi hoge.spec
--short-circuitオプションをつけると
%install 以前の部分(%prep,%build) を省略して %install,%checkが実行されます。
$ rpmbuild --short-circuit -bi hoge.spec
%files が正しく書かれているか確認できます。
次のように | (パイプ) と tee コマンドを利用して、ビルド中のメッセージをファイルに残しておくと、エラーの確認や、%files の確認、Requires の確認といった作業がやりやすくなります。
$ rpmbuild -ba hoge.spec 2>&1[3] |tee hoge-build.log
以上のコマンドを実行すると、segmentation faultを起こす時には、 Section 4.1, “環境設定”で述べたLANGの指定を再確認してください。 うまくいけば、ディレクトリRPMS/i386にrpmパッケージが、 ディレクトリSRPMSにsrpmパッケージができるはずです。
他に、 tar.gz 形式のソースの中に含まれている spec ファイルを用いて build するときには、 -b のかわりに -t を用いて、
$ rpmbuild -ta hoge.tar.gz
などとします。
[3] 2>&1 はエラーメッセージ(2:標準エラー出力の内容)を (tee コマンドに渡すために) 標準出力(1) にリダイレクトする(2に流れるメッセージを 1と合流させる)というものです。これで、tee で指定したファイル hoge-build.log に、標準出力のメッセージと一緒にエラーメッセージも書き込まれるようになります。