Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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 から bellopello、および 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 ファイルから bellopello、および 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 セクションを参照してください。