Menu Close
Settings Close

Language and Page Formatting Options

Red Hat Training

A Red Hat training course is available for RHEL 8

3.9. RPM を作成するための、元の SPEC ファイルの変更

以下の手順では、RPM を作成する rpmdev- newspec による SPEC 出力ファイルを修正する方法を示しています。

前提条件

  • 特定のプログラムのソースコードが、~/rpmbuild/SOURCES/ ディレクトリーに置かれている。
  • 空の SPEC ファイル (~/rpmbuild/specs/<name>.spec ファイル) が、rpmdev -newspec ユーティリティーで作成されている。

手順

  1. rpmdev -newspec ユーティリティーで生成される ~/rpmbuild/specs/<name>.spec ファイルの出力テンプレートを開きます。
  2. SPEC ファイルの最初のセクションを作成します。

    最初のセクションには、rpmdev -newspec がグループ化される以下のディレクティブが含まれます。

    Name
    Name は既に rpmdev -newspec の引数として指定されています。
    Version
    Version を、ソースコードのアップストリームのリリースバージョンと一致するように設定します。
    Release
    Release は、1%{?dist} に自動的に設定されます。最初は 1 となります。パッチを追加する場合など、アップストリームリリースの Version を変更せずにパッケージを更新するたびに、初期値を増やします。新しいアップストリームリリースが行われた際に、Release1 にリセットされます。
    Summary
    Summary は、ソフトウェアに関する 1 行の短い説明です。
  3. LicenseURL、および Source0 ディレクティブを入力します。

    License フィールドは、アップストリームリリースのソースコードに関連するソフトウェアライセンスです。SPEC ファイルで License にラベルを付ける方法は、使用する RPM ベースの特定の Linux ディストリビューションガイドラインによって異なります。

    たとえば、GPLv3+ を使用できます。

    URL フィールドは、アップストリームのソフトウェア Web サイトへの URL を指定します。一貫性を保つために、%{name} の RPM マクロ変数を利用して、https://example.com/% {name} を使用します。

    Source0 フィールドは、アップストリームのソフトウェアソースコードへの URL を指定します。これは、パッケージ化している特定のバージョンのソフトウェアに直接リンクする必要があります。本ドキュメントの URL の例には、将来変更される可能性があるハードコーディングした値が含まれています。同様に、リリースのバージョンも変更される可能性があります。今後の変更を簡素化するには、%{name} マクロと %{version} マクロを使用します。これらを使用して、SPEC ファイルの 1 つのフィールドのみを更新する必要があります。

  4. BuildRequires ディレクティブ、Requires ディレクティブ、および BuildArch ディレクティブを入力します。

    BuildRequires は、パッケージのビルドタイム依存関係を指定します。

    Requires は、パッケージのランタイム依存関係を指定します。

    これは、ネイティブにコンパイルされた拡張機能がない、インタープリター型プログラミング言語で書かれたソフトウェアです。したがって、noarch 値とともに BuildArch ディレクティブを追加します。これは、このパッケージを構築するプロセッサーアーキテクチャーに制限する必要がないことを RPM に指定します。

  5. %description%prep%build%install%files%license ディレクティブを入力します。

    これらのディレクティブは、マルチライン、マルチインストラクション、または実行するスクリプト処理タスクを定義することができるため、セクションの見出しと考えることができます。

    %description は、ソフトウェアの完全な説明で Summary よりも長く、複数の段落が含まれています。

    % prep セクションでは、ビルド環境の準備方法を指定します。通常、これには、ソースコードの圧縮アーカイブの展開、パッチの適用、および SPEC ファイルの後半で使用するためにソースコードでによる情報の解析が含まれます。このセクションでは、ビルトインの % setup -q マクロを使用できます。

    %build セクション では、ソフトウェアを構築する方法を指定します。

    %install セクションには、ソフトウェアを構築してから BUILDROOT ディレクトリーにインストールする方法に関する rpmbuild の説明が記載されています。

    このディレクトリーは空の chroot ベースディレクトリーで、エンドユーザーの root ディレクトリーに似ています。ここでは、インストールしたファイルを格納するディレクトリーを作成できます。このようなディレクトリーを作成するには、パスをハードコードせずに RPM マクロを使用します。

    %files セクションは、この RPM によるファイルのリストと、エンドユーザーシステム上のファイルの完全なパス場所を指定します。

    このセクションでは、組み込みのマクロを使用して、さまざまなファイルの役割を示すことができます。これは、rpm コマンドを使用したパッケージファイルマニフェストのメタデータの照会に役立ちます。たとえば、LICENSE ファイルがソフトウェアライセンスファイルであることを示すには、%license マクロを使用します。

  6. 最後のセクションの %changelog は、パッケージの各 Version-Release に対する日付入りのエントリーの一覧です。これらは、ソフトウェアの変更ではなく、パッケージの変更を記録します。パッケージ変更の例: パッチの追加、%build セクションのビルド手順の変更。

    最初の行は、以下の形式に従います。

    * 文字でで始まり、Day-of-Week Month Day Year Name Surname <email> - Version-Release が続きます。

    実際の変更エントリーには、以下の形式に従います。

    • 各変更エントリーには、変更ごとに複数の項目を含めることができます。
    • 各項目は新しい行で始まります。
    • 各項目は - 文字で始まります。

これで、必要なプログラム用に SPEC ファイル全体を作成できるようになりました。