4.6. RPM のビルド
rpmbuild コマンドを使用して RPM パッケージをビルドできます。このコマンドを使用する場合、rpmdev-setuptree ユーティリティーによって設定された構造と同じ特定のディレクトリーおよびファイル構造が求められます。
rpmbuild コマンドでは、ユースケースや期待する結果によって組み合わせる引数が異なります。主な使用例は次のとおりです。
- ソース RPM をビルドします。
バイナリー RPM をビルドします。
- ソース RPM からバイナリー RPM を再ビルドします。
-
specファイルからバイナリー RPM をビルドします。
4.6.1. ソース RPM のビルド リンクのコピーリンクがクリップボードにコピーされました!
ソース RPM (SRPM) をビルドすると、次の利点があります。
-
環境にデプロイされた特定の
Name-Version-Releaseを持つ RPM ファイルの正確なソースを保持できます。これには、正確なspecファイル、ソースコード、および関連するすべてのパッチが含まれます。これは追跡とデバッグに役立ちます。 - 異なるハードウェアプラットフォームまたはアーキテクチャー上でバイナリー RPM をビルドできます。
前提条件
システムに
rpmbuildユーティリティーがインストールされている。# yum install rpm-build次の
Hello World!実装が~/rpmbuild/SOURCES/ディレクトリーに配置されている。-
パッケージ化するプログラムの
specファイルが存在する。
手順
作成した
specファイルが含まれている~/rpmbuild/SPECS/ディレクトリーに移動します。$ cd ~/rpmbuild/SPECS/rpmbuildコマンドを入力し、specファイルを指定して、ソース 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 python-pello.spec Wrote: /home/admiller/rpmbuild/SRPMS/python-pello-1.0.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>たとえば、
bello、pello、celloを SRPM から再ビルドするには、次のように入力します。$ rpmbuild --rebuild bello-0.1-1.el8.src.rpm [output truncated] $ rpmbuild --rebuild python-pello-1.0.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ファイルとソースコードを削除します。
次のいずれかの方法でビルドすると、spec ファイルとソースコードを保持できます。
-
RPM をビルドするときに、
--rebuildオプションではなく--recompileオプションを指定したrpmbuildコマンドを使用します。 bello、python-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/python-pello-1.0.2-1.el8.src.rpm Updating / installing… …1:python-pello-1.0.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 のビルド リンクのコピーリンクがクリップボードにコピーされました!
spec ファイルからバイナリー RPM をビルドするには、-bb オプションを指定した rpmbuild コマンドを使用します。-bb オプションは バイナリーのビルド を表します。
前提条件
システムに
rpmbuildユーティリティーがインストールされている。# yum install rpm-build
手順
specファイルが含まれている~/rpmbuild/SPECS/ディレクトリーに移動します。$ cd ~/rpmbuild/SPECS/specからバイナリー RPM をビルドします。$ rpmbuild -bb <spec_file>たとえば、
specファイルからbello、pello、celloバイナリー RPM をビルドするには、次のように入力します。$ rpmbuild -bb bello.spec $ rpmbuild -bb python-pello.spec $ rpmbuild -bb cello.spec