4.6. RPM のビルド
rpmbuild
コマンドを使用して RPM パッケージをビルドできます。このコマンドを使用する場合、rpmdev-setuptree
ユーティリティーによって設定された構造と同じ特定のディレクトリーおよびファイル構造が想定されます。
rpmbuild
コマンドでは、ユースケースや期待する結果によって組み合わせる引数が異なります。主な使用例は次のとおりです。
- ソース RPM のビルド
バイナリー RPM のビルド
- ソース RPM からのバイナリー RPM の再ビルド
- SPEC ファイルからのバイナリー RPM のビルド
4.6.1. ソース RPM のビルド
ソース RPM (SRPM) をビルドすると、次の利点があります。
-
環境にデプロイされた RPM ファイルの特定の
名前、バージョン、リリース
の正確なソースを保持できます。これには、正しい SPEC ファイル、ソースコード、およびすべての関連パッチが含まれます。これは追跡とデバッグに役立ちます。 - 異なるハードウェアプラットフォームまたはアーキテクチャー上でバイナリー RPM をビルドできます。
前提条件
システムに
rpmbuild
ユーティリティーがインストールされています:# yum install rpm-build
次の
Hello World!
実装は~/rpmbuild/SOURCES/
ディレクトリーに配置されました。-
パッケージ化するプログラムの
仕様
ファイルが存在します。
手順
~/rpmbuild/SPECS/
ディレクティブに移動します。このディレクティブには、作成した SPEC ファイルが含まれています。$ cd ~/rpmbuild/SPECS/
指定された
仕様
ファイルを使用してrpmbuild
コマンドを入力して、ソース RPM をビルドします。$ rpmbuild -bs <specfile>
-bs
オプションは、ビルドソースを表します。たとえば、
bello
、pello
、cello
プログラムのソース RPM をビルドするには、次のように入力します。$ rpmbuild -bs bello.spec Wrote: /home/admiller/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm $ rpmbuild -bs pello.spec Wrote: /home/admiller/rpmbuild/SRPMS/pello-0.1.2-1.el8.src.rpm $ rpmbuild -bs cello.spec Wrote: /home/admiller/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm
検証手順
-
rpmbuild/SRPMS
ディレクトリーに、生成されたソース RPM が含まれていることを確認します。ディレクトリーは、rpmbuild
で必要な構造の一部です。
4.6.2. ソース RPM からのバイナリー RPM の再ビルド
ソース RPM (SRPM) からバイナリー RPM を再構築するには、--rebuild
オプションを指定した rpmbuild
コマンドを使用します。
バイナリー RPM の作成時に生成される出力は詳細なもので、これはデバッグに役立ちます。この出力は各種例によって異なり、SPEC ファイルに一致します。
生成されるバイナリー RPM は 、~/rpmbuild/RPMS/YOURARCH
ディレクトリー (YOURARCH
はアーキテクチャー) に配置されます。パッケージがアーキテクチャー固有でない場合は ~/rpmbuild/RPMS/noarch/
ディレクトリーに配置されます。
前提条件
システムに
rpmbuild
ユーティリティーがインストールされています:# yum install rpm-build
手順
ソース RPM が含まれている
~/rpmbuild/SRPMS/
ディレクティブに移動します。$ cd ~/rpmbuild/SRPMS/
ソース RPM からバイナリー RPM を再構築します。
$ rpmbuild --rebuild <srpm>
srpm を ソース RPM ファイルの名前に置き換えます。
たとえば、
bello
、pello
、cello を
SRPM から再構築するには、次のように入力します。$ rpmbuild --rebuild bello-0.1-1.el8.src.rpm [output truncated] $ rpmbuild --rebuild pello-0.1.2-1.el8.src.rpm [output truncated] $ rpmbuild --rebuild cello-1.0-1.el8.src.rpm [output truncated]
rpmbuild --rebuild
を呼び出すと、次のプロセスが実行されます。
-
SRPM の内容 (SPEC ファイルおよびソースコード) の、
~/rpmbuild/
ディレクトリーへのインストール。 - インストールされたコンテンツを使用して RPM をビルドします。
- SPEC ファイルとソースコードを削除します。
次のいずれかの方法でビルドした後、仕様
ファイルとソースコードを保持できます。
-
RPM をビルドするときは、
--rebuild
オプションの代わりに--recompile
オプションを指定してrpmbuild
コマンドを使用します。 bello
、pello
、cello
の SRPM をインストールします。$ rpm -Uvh ~/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm Updating / installing… 1:bello-0.1-1.el8 [100%] $ rpm -Uvh ~/rpmbuild/SRPMS/pello-0.1.2-1.el8.src.rpm Updating / installing… …1:pello-0.1.2-1.el8 [100%] $ rpm -Uvh ~/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm Updating / installing… …1:cello-1.0-1.el8 [100%]
4.6.3. SPEC ファイルからのバイナリー RPM のビルド
仕様
ファイルからバイナリー RPM をビルドするには、-bb
オプションを指定した rpmbuild
コマンドを使用します。
前提条件
システムに
rpmbuild
ユーティリティーがインストールされています:# yum install rpm-build
手順
仕様
ファイルが含まれている~/rpmbuild/SPECS/
ディレクティブに移動します。$ cd ~/rpmbuild/SPECS/
仕様
からバイナリー RPM をビルドします。$ rpmbuild -bb <spec_file>
たとえば、
spec
ファイルからbello
、pello
、cello
バイナリー RPM をビルドするには、次のように入力します。$ rpmbuild -bb bello.spec $ rpmbuild -bb pello.spec $ rpmbuild -bb cello.spec