4.2. スペックファイルについて
spec
ファイルは、rpmbuild
ユーティリティーが RPM パッケージを構築するために使用する指示が記述されたファイルです。SPEC ファイルは、一連のセクションで命令を定義することで、ビルドシステムに必要な情報を提供します。これらのセクションは、仕様
ファイルの プリアンブル と 本文 部分で定義されています。
- プリアンブル セクションには、本文 セクションで使用される一連のメタデータ項目が含まれています。
- 本文 セクションは、手順の主要部分を表します。
4.2.1. Preamble 項目
以下は、RPM 仕様
ファイルの Preamble セクションで使用できるディレクティブの一部です。
ディレクティブ | 定義 |
---|---|
|
|
| ソフトウェアのアップストリームのバージョン番号。 |
| パッケージのバージョンがリリースされた回数。
初期値を |
| パッケージの 1 行の概要 |
| パッケージ化しているソフトウェアのライセンス。
SPEC ファイルで |
| ソフトウェアの詳細情報の完全な URL (パッケージ化されるソフトウェアのアップストリームプロジェクト Web サイトなど)。 |
| パッチが適用されていないアップストリームソースコードの圧縮アーカイブへのパスまたは URL。これは、たとえば、パッケージャーのローカルストレージではなく、アップストリームページなどのアーカイブの、アクセス可能で信頼できるストレージを参照している必要があります。
ディレクティブ名の末尾に数字を付けても付けなくても、 |
| 必要に応じて、ソースコードに適用する最初のパッチの名前。
ディレクティブ名の末尾に数字を付けても付けなくても、
|
| ソフトウェアが構築されるアーキテクチャー。
ソフトウェアがアーキテクチャーに依存しない場合、たとえば、ソフトウェア全体をインタープリタ型プログラミング言語で記述した場合は、値を |
|
コンパイル言語で書かれたプログラムを構築するのに必要なコンマ区切りまたは空白区切りのリスト。 |
|
インストール後のソフトウェアの実行に必要なパッケージのコンマ区切りまたは空白区切りのリスト。 |
|
ソフトウェアが特定のプロセッサーアーキテクチャーで動作できない場合は、 |
|
ソフトウェアをインストールしたときに正常に機能させるために、システムにインストールしてはならないパッケージの、コンマまたは空白で区切られたリスト。 |
|
|
|
パッケージに |
Name
、Version
、および Release
(NVR) ディレクティブは 、名前 - バージョン - リリース
形式の 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 section で使用される項目は次のとおりです。
ディレクティブ | 定義 |
---|---|
| RPM でパッケージ化されているソフトウェアの完全な説明。この説明は、複数の行や、複数の段落にまでわたることがあります。 |
|
たとえば、 |
| ソフトウェアをマシンコード (コンパイル言語の場合) またはバイトコード (一部のインタープリター言語の場合) にビルドするための 1 つまたは一連のコマンド。 |
|
ソフトウェアがビルドされた後、 このディレクトリーは空の chroot ベースディレクトリーで、エンドユーザーの root ディレクトリーに似ています。ここでは、インストールしたファイルを格納するディレクトリーを作成できます。このようなディレクトリーを作成するには、パスをハードコードせずに RPM マクロを使用します。
|
| ソフトウェアをテストするためのコマンドまたは一連のコマンド (ユニットテストなど)。 |
| RPM パッケージによって提供され、ユーザーのシステムにインストールされるファイルと、システム上の完全なパスの場所のリスト。
ビルド中に、
|
|
異なる |
4.2.3. 高度な項目
仕様
ファイルには、スクリプトレット や トリガー などの高度な項目を含めることができます。
スクリプトレットとトリガーは、ビルドプロセスではなく、エンドユーザーのシステムでのインストールプロセス中のさまざまな時点で有効になります。