4.2. spec ファイルについて
spec
ファイルは、rpmbuild
ユーティリティーが RPM パッケージをビルドするために使用する指示が記述されたファイルです。このファイルは、一連のセクションで指示を定義することにより、ビルドシステムに必要な情報を提供します。これらのセクションは、spec
ファイルの Preamble 部分と Body 部分で定義されます。
- Preamble セクションには、Body セクションで使用される一連のメタデータ項目が含まれています。
- Body セクションは、指示の主要部分を表します。
4.2.1. Preamble 項目
以下は、RPM spec
ファイルの Preamble セクションで使用できるディレクティブの一部です。
ディレクティブ | 定義 |
---|---|
|
パッケージのベース名。 |
| ソフトウェアのアップストリームのバージョン番号。 |
| パッケージのバージョンがリリースされた回数。
初期値を |
| パッケージの簡単な一行の概要。 |
| パッケージ化するソフトウェアのライセンス。
|
| ソフトウェアの詳細情報の完全な URL (パッケージ化するソフトウェアのアップストリームプロジェクトの Web サイトなど)。 |
| パッチが適用されていないアップストリームソースコードの圧縮アーカイブへのパスまたは URL。このリンクの参照先は、パッケージャーのローカルストレージではなく、アクセスしやすく信頼性の高いアーカイブ保存場所 (アップストリームのページなど) である必要があります。
|
| 必要に応じて、ソースコードに適用する最初のパッチの名前。
|
| ソフトウェアのビルド対象アーキテクチャー。
ソフトウェアがアーキテクチャーに依存しない場合、たとえば、ソフトウェア全体をインタープリター型プログラミング言語で記述した場合は、値を |
|
コンパイル言語で記述されたプログラムをビルドするために必要なパッケージのコンマまたは空白区切りのリスト。複数の |
|
インストール後のソフトウェアの実行に必要なパッケージのコンマ区切りまたは空白区切りのリスト。複数の |
|
ソフトウェアが特定のプロセッサーアーキテクチャーで動作しない場合は、 |
|
ソフトウェアをインストールしたときに正常に機能させるために、システムにインストールしてはならないパッケージのコンマまたは空白区切りのリスト。複数の |
|
|
|
パッケージに |
Name
、Version
、および Release
(NVR) ディレクティブは、name-version-release
という形式の RPM パッケージのファイル名で構成されます。
rpm
コマンドを使用して RPM データベースをクエリーすることにより、特定のパッケージの NVR 情報を表示できます。次に例を示します。
# rpm -q bash
bash-4.4.19-7.el8.x86_64
ここでは、bash
がパッケージ名で、4.4.19
がバージョン番号を示し、7.el8
がリリースを意味しています。x86_64
は、パッケージアーキテクチャーを示すマーカーです。アーキテクチャーマーカーは、NVR とは異なり、RPM パッケージャーが直接制御するものではなく、rpmbuild
ビルド環境によって定義されます。アーキテクチャーに依存しない noarch
パッケージは例外です。
4.2.2. Body 項目
以下は、RPM spec
ファイルの Body セクションで使用される項目です。
ディレクティブ | 定義 |
---|---|
| RPM でパッケージ化されているソフトウェアの完全な説明。この説明は、複数の行や、複数の段落にまでわたることがあります。 |
|
ソフトウェアのビルドを準備するための 1 つまたは一連のコマンド。たとえば、 |
| ソフトウェアをマシンコード (コンパイル言語の場合) またはバイトコード (一部のインタープリター言語の場合) にビルドするための 1 つまたは一連のコマンド。 |
|
ソフトウェアのビルド後に、
|
| ソフトウェアをテストするための 1 つまたは一連のコマンド (ユニットテストなど)。 |
| RPM パッケージによって提供され、ユーザーのシステムにインストールされるファイルのリストと、システム上におけるファイル配置場所のフルパスのリスト。
ビルド中に、
|
|
異なる |
4.2.3. 高度な項目
spec
ファイルには、Scriptlets や Triggers などの高度な項目を含めることができます。
Scriptlets と Triggers は、ビルドプロセスではなく、エンドユーザーのシステムにおけるインストールプロセス中のさまざまな時点で有効になります。