パッケージの説明を簡単に一行で書きます. タイトルのようにspecファイルの一行目に書くことが多いです. 英語で簡潔に書きましょう. Summaryは, 国際化機能をもっており, Summary(ja)のように, 日本語のサマリーを書いておくと, 環境変数 LANGUAGE が ja な時には, 日本語のほうが表示されます. ただし, Summary(ja)を用意したときにも, 英語の Summaryは必ず用意してください. また, 日本語がspecファイルの 始めの方にあると, rpmコマンドがエラーを出すことがあるので, Summary(ja)はデータ定義部の下のほうに書くほうがいいようです. また, 日本語メッセージは必ず EUC で入れてください.
つくるrpmパッケージの名前です. 環境変数RPM_PACKAGE_NAMEに設定されます.
ソースのバージョン名を入れます. 環境変数RPM_PACKAGE_VERSIONに設定されます.
同じソースからつくるrpmパッケージのリリース番号です. 環境変数RPM_PACKAGE_RELEASEに設定されます.
rpmパッケージをつくるソース名です. データ定義部で設定した SOURCESのディレクトリに置いておきましょう. ソースの入手先を明示するために,
Source: ftp://ftp.hogehoge.org/hoge-1.1.tar.gz
と書いておくと便利です. 自分でつくったソースならば, サンプルのようにファ イル名のみを書いておきます.
複数のソースファイルがあるときには,
Source0: ftp://ftp.hogehoge.org/hoge-1.1.tar.gz Source1: ftp://ftp.hogehoge.org/hoge-devel.tar.gz
というふうに番号をふって列挙します. (Source0 と Source は同じ意味です)
上で設定したソースにあてる,パッチファイルです. 書式は Sourceと同じです. このパッチファイルもディレクトリ SOUCESに置いときましょう. 複数あるときにも,Sourceと同様に番号をふって列挙できます.
作成するrpmパッケージの著作権を書きます. もとのソースの Copyright とかを良く読んで, できるだけ簡潔に書きましょう.
つくるパッケージのカテゴリーを書きます.glintを使うと きには,
このGroup
名にもとづいて分類されて,アイコンが表示され ます. 良くわからなかったら,
ちょっとglintを起動して,アイコン名を見てみ ましょう. 付録
にもRHLで用いているグループ名の一覧を示します.
個人使い用のrpmのときは,ぼくはとりあえずLocalとかにしてしまいます.
他人に配布するときには真面目に考えましょう.
Packager
rpmパッケージを作ってるあなたの名前です. Email addressを入れておくと,思わぬとこからバグ報告とかもらえて 嬉しいこともあります.
Buildroot
データ定義部のprep節で説明した, 仮想インストールの ためのディレクトリ名を書きます.Buildroot
の設定を行わなければ,RPM_BUILD_ROOT
はnullです. 例では、%{_tmppath}
,%{name}
というマクロを利用して、 Buildrootが定義されています。%{_tmppath}
は/usr/lib/rpm/macros
で定義されており、/var/tmp
を指し ます。%{name}
は、パッケージの名前を示すマクロです。よって 例の場合はBuildroot は/var/tmp/hoge-root
というディレクト リを指すことになります。マクロを使わずに直接このディレクトリ名を 書いても構いません。
%description
このタグの下に,rpmパッケージの解説を書きます.rpm -qip <rpm-name>
で出てくる説明です. このタグも国際化機能をもってます. 日本語メッセージを表示させたいときには,%description -l ja
を用います. ただし, 日本語メッセージを用意したときにも, 必ず英語メッセージは書 いておきましょう.
%changelog
ここには, 更新のログを書いておきます. 必須ではありませんが, 書いておかないと, どれがなんだかわからなくなったりするので,
管理が楽になるように出来るだけ書いておきましょう. なお, %changelog
は,
specファイルの一番下(ファイルリスト部の 下)に持って来ることもできます.
hoge-1.1-1.i386.rpm
という名前のrpmができます (architectureがi386の場合).
サンプルには書かれてませんが,他にも以下のようにいろいろなタグがあります.いろいろ設定したい時に参考にして下さい.
Requires
作成しているrpmパッケージが動作するのに必要なパッケージ名を書きます. 例えば,
Requires: gs
として,動作にgsがインストールしていることが必要なことを示します.ま た,<, >, =,
>=, <=
を使って必要なバージョン,リリース番号を示 すことも出来ます.この,演算子の両側には必ずスペースを入れてくださ
い.(入れないと一つの名前として認識されてしまいます)
Requires: ghostscript = 5.10
とするとghostscriptのバージョン5.10が必要なことを示し,
Requires: ghostscript >= 5.10
として5.10以上が必要なことを示します.必要なライブラリ名を書くことも できます. Requiresしたいものが複数あるときには,
Requires: ghostscript >= 5.10, ghostscript-fonts, VFlib = 2.24
などのように,'',''で区切って並べます.
rpmパッケージをbuildするときには,そのパッケージに含まれるバイナリの 実行に必要なライブラリ名も,自動的にRequires
に加えられます (正確には必要なライブラリのsonameが加えられます). rpmパッケージをinstallするときに,必要なライブラリがシステム上にない と,libhoge.so is needed
とかいって,おこられますが,libhoge.so
がなんというパッケージに入ってるかわからずに困るこ とがよくあるので,必要なパッケージ名をきちんとRequires
に書く ように心がけましょう.
Provides
インストールしたいhoge-1.1-1.rpm
がgsを必要(Requires)としてる としましょう.
しかし,システム上にはgsはなく,代りに日本語化されたgsであるgsjがイ ンストールされてるとします.このとき,hoge.rpmをインストールしようと
するとrpmコマンドはエラー・メッセージを出します. このようなトラブルをさけるためには,dvipskを作るときに,
Provides: dvips
と書いておくと,dvipskはdvipsパッケージを提供することを示せます. また,あるアプリがpdfを読むツールをRequires
するときには, xpdfやgs(pdf対応)のProvides
に
Provides: pdf-reader
と仮想的なパッケージ名(仮想パッケージ virtual package) を書いておくと,
なんらかのpdf-reader
がインストールされてることを要求できます.
Conflicts
Requires
と逆の意味を持ちます.すなわち,共存できないパッケー ジ名を指定できます.バージョンやリリース番号指定もRequires
と 同様にできます. 例えば以下のように指定します.
Conflicts: fugefuge >= 1.0, fugafuga = 1.2-1
Obsoletes
仮に,pLaTeX2eのrpmをインストールするときには,古いTeXのパッケージ であったptexはアンインストールしたいとしましょう.こんなときには, pLaTeX2eのspecファイルには,
Obsoletes: ptex
と書いておくと,pLaTeX2eのインストール時にptexは消去されます.
Prereq
パッケージのインストール時に、先にインストールされているべきパッケー ジを書きます. 例えば, gnome-print パッケージをインストールするとき に, urw-fonts パッケージがインストールされていないといけないならば,
Prereqe: urw-fonts
と書いておくと,gnome-printのインストール時にurw-fontsが既にインス トールされているかがチェックされます.
BuildPrereq
パッケージの作成の時に、インストールされているべきパッケージを書きま す. 例えば, pLaTeX2e パッケージを作成するときに, pTeX パッケージがイ ンストールされていないといけないならば,
BuildPrereqe: pTeX
と書いておくと,pLaTeX2eの作成時にpTeXがインストールされているかが チェックされます.
Distribution
作成したrpmパッケージがなんらかのディストリビューションに含まれる時, そのディストリビューション名を書きます.
Vendor
作成したrpmパッケージに関する責任を負うVendor
名です.
なんらかのプロジェクトでrpmパッケージを作ってる時には,そのプロジェ クト名を書きましょう
Url
ソースの情報を提供しているURLを書きます. 例えば以下のように書きます.
URL: http://www.fugahogo.com/hogehoge.html
Prefix
このタグを使うと,rpmパッケージをインストールする時にインストールディ レクトリをコントロールできます. 例えば,
Prefix: /usr
としていて,ファイルリスト部で
%files /usr/bin/fuga
と定義してたとしましょう.このパッケージをインストールする時に,--prefix /usr/local
とオプション指定すると,fuga
は/usr/local/bin/fuga.bin
にインストールされます.
BuildArch
(rpm-2.4
系より)
書いたspecファイルを使って生成されるrpmパッケージのアーキテクチャを指 定できます.例えば,elファイルとかシェルスクリプトとかばかりを含む rpmパッケージを作るときには,i386
やalpha
などのアーキテク チャに依存しないnoarch
であることを,
BuildArch: noarch
というふうに明示します.このような指定をしておくとnoarch.rpm
とい
う拡張子のつくrpmパッケージが作成できて,いろいろなアーキテクチャ上で 共用できます.
データ定義部には,さらにいろいろな情報を付け加えることもできます. MaximumRPM等を見てください.