RPMのspecファイルで利用するマクロ・変数

RPMのspecファイルで利用するマクロ・変数

2022-01-093 min read

目次

  1. はじめに
  2. マクロ一覧
  3. コメント
  4. 参考文献

はじめに

RPM(Fedora/CentOS系)を作成する際に利用するspecファイルで利用できるマクロについて調べた際のメモです。

マクロ一覧

基本情報系

  • Name

パッケージの名前を定義します。これはspecファイル名と一致する必要があります。

定義すると%{name}というマクロで参照できます。

詳細はパッケージ命名ガイドラインを参照してください。

  • Version

アップストリームのバージョン番号を定義します。バージョンに数値以外のタグが含まれている場合は、Releaseタグに数値以外の文字を含める必要がある場合があります。

定義すると%{version}というマクロで参照できます。

詳細は、バージョン管理ガイドを参照してください。

  • Release

初期値を1%\{?dist}に設定します。

同じバージョンで新しいパッケージをリリースするたびに、カウントアップします。

新しいバージョンがリリースされたら、一致するようにVersionタグを変更し、Release1にリセットします。

詳細については、バージョン管理ガイドを参照してください。

  • Summary

    パッケージの簡単な要約を入力します。

  • Group

このタグは廃止されました。

  • License

ライセンスを記載します。

詳細については、ライセンスガイドラインを参照してください。

andor(例GPLv2 and BSD)と組み合わせて、複数のライセンスを定義できます。

  • URL

例えばプロジェクトのWebサイトやGitHubのREADMEなどプログラムの詳細を説明しているサイトのURLを定義します。

※元のソースコードへのリンク(Web上に配置されたtarやzipのリンク)を追加しないでください。これはSource0タグにて定義します。

  • Source0

アップストリームがリリースした元の元のソースコードを含む圧縮アーカイブの完全なURLを入力します。

「Source」でも同じ意味となります。

複数ソースがある場合はSource1,Source2...と定義できます。

可能であれば、Source0に%{name}%{version}を埋め込んで、ファイル名やバージョン更新した際に変更が適切に行われるようにしておくのが良いです。

ソースファイルをダウンロードするときのタイムスタンプを利用することができ、 詳細については、Fedora Packaging Guidelines(timestamps)参照してください。

その他、特殊なケースについては、Referencing Source参照してください。

  • Patch0

ソースコードに適用するパッチの名前を入力します。

複数パッチがある場合は Patch1,Patch2...と定義できます。

パッチは、.patchファイルとして~/rpmbuild/SOURCESディレクトリに保存します。

  • BuildArch

shellscriptやデータファイルなど、アーキテクチャに依存しないファイルをパッケージ化する場合は、BuildArch: noarchを追加します。

バイナリRPMのアーキテクチャは次のようになりnoarchます。

  • BuildRoot

仮想インストールのためのディレクトリ名を定義します。

※デフォルトでは、BuildRootは%{_topdir}/BUILDROOT/となります。

  • BuildRequires

パッケージの作成について、依存関係で必要となるパッケージを記載します。

プログラムのコンパイルに必要なパッケージをコンマ区切りで追加します。

例えば、ocamlの3.08が必要な場合

BuildRequires: ocaml = 3.08

と定義します。

  • Requires

パッケージの動作について、依存関係で必要となるパッケージを記載します。

例えば、ocamlの3.08以上が必要な場合

Requires: ocaml >= 3.08

Body項目

  • %description

より詳細なパッケージの説明を入力します。

  • %prep

ビルド作業前に必要な「準備」するための処理をシェルスクリプトで記述します。

この項目では

rm -rf ${RPM_BUILD_ROOT}

などのクリーンアップ的な操作を行う場合が多いです。

RPM_BUILD_ROOT : BuildRootで設定された仮想インストールのためのディレクトリ

  • %build

スクリプトコマンドを追加してプログラムをコンパイルし、インストールの準備をします。

具体的にはconfiguremakeなどを行います。

  • %install

プログラムを「インストール」するスクリプトを定義します。

BuildRootで設定したディレクトリ(${RPM_BUILD_ROOT}) の下に全てのファイルがインストールされるよう調整する必要があります。

  • %check

プログラムを「テスト」するためのスクリプトコマンドを追加します。

多くの場合、make testまたはmake checkなどを定義します。

  • %clean

通常、これにはrm -rf %{buildrootなどを定義しますs。

  • %files

rpmに追加するファイルを定義します。

  • %changelog

パッケージの変更履歴を記載します。

  • ExcludeArch

パッケージが特定のアーキテクチャで正常にコンパイル、ビルドができない場合は、これらのアーキテクチャをこのタグの下にリストしてください。

コメント

コメントについて

  • 先頭に#文字を付けてコメントを挿入します。
  • 複数行になる可能性のあるマクロ(%で始まる)に注意します。
  • 行をコメントアウトするとき%%は、の後に表示されるマクロのパーセント記号(#)を2つにします。
  • スクリプトコマンドと同じ行にインラインコメントを付けることは避けます。

参考文献

Author
githubzennqiita
ただの備忘録です。

※外部送信に関する公表事項