3.3. RPM のビルド
本セクションでは、プログラム用の SPEC ファイルを作成した後に RPM を構築する方法を説明します。
RPM は、rpmbuild
コマンドで構築されます。このコマンドは、特定のディレクトリーと rpmdev -setuptree
ユーティリティーで設定された構造と同じファイル構造を想定します。
rpmbuild
コマンドでは、ユースケースや期待する結果によって組み合わせる引数が異なります。本セクションでは、主なユースケースを 2 つ説明します。
- ソース RPM のビルド
- バイナリー RPM のビルド
3.3.1. ソース RPM のビルド
この段落は、手順モジュールの紹介 (手順の簡単な説明) です。
前提条件
パッケージ化するプログラムの SPEC ファイルがすでに存在している必要があります。SPEC ファイルの作成方法は SPEC ファイルでの作業 を参照してください。
手順
次の手順では、ソース RPM のビルド方法を説明します。
指定の SPEC ファイルを使用して
rpmbuild
コマンドを実行します。$ rpmbuild -bs SPECFILE
SPECFILE を SPEC ファイルに置き換えます。
-bs
オプションは、ビルドソースを表します。
以下の例は、bello
プロジェクト、pello
プロジェクト、および cello
プロジェクトのソース RPM のビルドを示しています。
bello、pello、および cello のソース RPM のビルド。
$ cd ~/rpmbuild/SPECS/ 8$ rpmbuild -bs bello.spec Wrote: /home/<username>/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm $ rpmbuild -bs pello.spec Wrote: /home/<username>/rpmbuild/SRPMS/pello-0.1.2-1.el8.src.rpm $ rpmbuild -bs cello.spec Wrote: /home/<username>/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm
検証手順
-
生成されたソース RPM が
rpmbuild/SRPMS
ディレクトリーに含まれていることを確認してください。ディレクトリーは、rpmbuild
で必要な構造の一部です。
3.3.2. バイナリー RPM のビルド
バイナリー RPM のビルドには、以下の方法を使用できます。
- ソース RPM からのバイナリー RPM の再ビルド
- SPEC ファイルからのバイナリー RPM のビルド
- ソース RPM からのバイナリー RPM のビルド
3.3.2.1. ソース RPM からのバイナリー RPM の再ビルド
以下の手順は、ソース RPM (SRPM) からバイナリー RPM を再構築する方法を示しています。
手順
SRPMS から
bello
、pello
、およびcello
を再構築するには、以下を実行します。$ 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/
ディレクトリーへのインストール。 - インストール済みコンテンツを使用したビルド。
- SPEC ファイルとソースコードの削除
SPEC ファイルとソースコードをビルド後も維持するには、以下を行います。
-
ビルド時には、
--rebuild
オプションの代わりに、--recompile
オプションを指定してrpmbuild
コマンドを使用します。 以下のコマンドを使用して 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 は、YOURARCH
がアーキテクチャーとなる ~/rpmbuild/RPMS/YOURARCH
ディレクトリーか、パッケージがアーキテクチャー固有でなければ、~/rpmbuild/RPMS/noarch/
ディレクトリーに位置します。
3.3.2.2. SPEC ファイルからのバイナリー RPM のビルド
以下の手順では、SPEC ファイルから bello
、pello
、および cello
バイナリー RPM のビルド方法を示しています。
手順
bb
オプションを指定して、rpmbuild
コマンドを実行します。$ rpmbuild -bb ~/rpmbuild/SPECS/bello.spec $ rpmbuild -bb ~/rpmbuild/SPECS/pello.spec $ rpmbuild -bb ~/rpmbuild/SPECS/cello.spec
3.3.2.3. ソース RPM からの RPM のビルド
ソース RPM からあらゆる種類の RPM をビルドすることもできます。これを行うには、以下の手順を行います。
手順
以下のオプションのいずれかと、ソースパッケージを指定して、
rpmbuild
コマンドを実行します。# rpmbuild {-ra|-rb|-rp|-rc|-ri|-rl|-rs} [rpmbuild-options] SOURCEPACKAGE
関連情報
ソース RPM から RPM をビルドする方法は、man ページの rpmbuild(8)
の BUILDING PACKAGES
セクションを参照してください。