Red Hat Training
A Red Hat training course is available for RHEL 8
4.6. RPM のビルド
rpmbuild
コマンドを使用して RPM パッケージをビルドできます。このコマンドは、特定のディレクトリーと rpmdev -setuptree
ユーティリティーで設定された構造と同じファイル構造を想定します。
rpmbuild
コマンドでは、ユースケースや期待する結果によって組み合わせる引数が異なります。主なユースケースは以下の 2 つです。
- ソース RPM のビルド
バイナリー RPM のビルド
- ソース RPM からのバイナリー RPM の再ビルド
- SPEC ファイルからのバイナリー RPM のビルド
- ソース RPM からのバイナリー RPM のビルド
次のセクションでは、プログラムの SPEC ファイルを作成した後に RPM をビルドする方法を説明します。
4.6.1. ソース RPM のビルド
ソース RPM をビルドするには、次の手順を実行します。
前提条件
- パッケージ化するプログラムの SPEC ファイルがすでにある。
手順
指定の SPEC ファイルを使用して
rpmbuild
コマンドを実行します。$ rpmbuild -bs specfile
specfile は、SPEC ファイルの名前に置き換えます。
-bs
オプションは、ビルドソースを表します。
検証手順
-
rpmbuild/SRPMS
ディレクトリーに、生成されたソース RPM が含まれていることを確認します。ディレクトリーは、rpmbuild
で必要な構造の一部です。
例4.2 bello、pello、および cello のソース RPM のビルド。
以下は、bello
、pello
、および cello
プロジェクトのソース RPM をビルドする例です。
~/rpmbuild/SPECS/
ディレクティブに移動します。このディレクティブには、作成した SPEC ファイルが含まれています。$ cd ~/rpmbuild/SPECS/
指定の SPEC ファイルを使用して
rpmbuild
コマンドを実行します。$ 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
4.6.2. ソース RPM からのバイナリー RPM の再ビルド
ソース RPM (SRPM) からバイナリー RPM を再ビルドするには、次の手順を実行します。
手順
bello
、pello
、およびcello
を SRPM から再ビルドするには、次を実行します。$ rpmbuild --rebuild ~/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm [output truncated] $ rpmbuild --rebuild ~/rpmbuild/SRPMS/pello-0.1.2-1.el8.src.rpm [output truncated] $ rpmbuild --rebuild ~/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm [output truncated]
rpmbuild --rebuild
の呼び出しには以下が含まれます。
-
SRPM の内容 (SPEC ファイルおよびソースコード) を
~/rpmbuild/
ディレクトリーにインストールします。 - インストールされたコンテンツを使用して RPM をビルドします。
- SPEC ファイルとソースコードを削除します。
ビルド後に 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%]
バイナリー RPM の作成時に生成される出力は詳細なもので、これはデバッグに役立ちます。この出力は各種例によって異なり、SPEC ファイルに一致します。
生成されるバイナリー RPM は 、~/rpmbuild/RPMS/YOURARCH
ディレクトリー (YOURARCH
はアーキテクチャー) に配置されます。パッケージがアーキテクチャー固有でない場合は ~/rpmbuild/RPMS/noarch/
ディレクトリーに配置されます。
4.6.3. SPEC ファイルからのバイナリー RPM のビルド
bello
、pello
、および cello
バイナリー RPM を SPEC ファイルからビルドするには、次の手順を実行します。
手順
bb
オプションを指定して、rpmbuild
コマンドを実行します。$ rpmbuild -bb ~/rpmbuild/SPECS/bello.spec $ rpmbuild -bb ~/rpmbuild/SPECS/pello.spec $ rpmbuild -bb ~/rpmbuild/SPECS/cello.spec
4.6.4. ソース RPM からのバイナリー RPM のビルド
ソース RPM から任意の種類の RPM をビルドします。これを行うには、次の手順を実行します。
手順
次のいずれかのオプションとソースパッケージを指定して、
rpmbuild
コマンドを実行します。# rpmbuild {-ra|-rb|-rp|-rc|-ri|-rl|-rs} [rpmbuild-options] source-package
source-package は、ソース RPM の名前に置き換えます。
関連情報
-
rpmbuild(8)
man ページ