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 のビルド。

以下は、bellopello、および cello プロジェクトのソース RPM をビルドする例です。

  1. ~/rpmbuild/SPECS/ ディレクティブに移動します。このディレクティブには、作成した SPEC ファイルが含まれています。

    $ cd ~/rpmbuild/SPECS/
  2. 指定の 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 を再ビルドするには、次の手順を実行します。

手順

  • bellopello、および 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 コマンドを使用します。
  • bellopello、および 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 のビルド

bellopello、および 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 ページ