Summary
パッケージの説明を簡単に一行で書きます. タイトルのようにspecファイルの一行目に書くことが多いです. 英語で簡潔に書きましょう.Summaryは, 国際化機能をもっており,Summary(ja)のように, 日本語のサマリーを書いておくと, 環境変数 LANGUAGE が ja な時には, 日本語のほうが表示されます. ただし,Summary(ja)を用意したときにも, 英語のSummaryは必ず用意してください. また, 日本語がspecファイルの 始めの方にあると,rpmコマンドがエラーを出すことがあるので,Summary(ja)はデータ定義部の下のほうに書くほうがいいようです. また, 日本語メッセージは必ず EUC で入れてください.
Name
つくるrpmパッケージの名前です.
環境変数RPM_PACKAGE_NAMEに設定されます.
Version
ソースのバージョン名を入れます.
環境変数RPM_PACKAGE_VERSIONに設定されます.
Release
同じソースからつくるrpmパッケージのリリース番号です.
環境変数RPM_PACKAGE_RELEASEに設定されます.
Source
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は同じ意味です)
Patch
上で設定したソースにあてる,パッチファイルです.書式はSourceと同じです.このパッチファイルもディレクトリSOUCESに置いときましょう. 複数あるときにも,Sourceと同様に番号をふって列挙できます.
Copyright
作成するrpmパッケージの著作権を書きます.もとのソースの Copyright とかを良く読んで,できるだけ簡潔に書きましょう.
Group
つくるパッケージのカテゴリーを書きます.glintを使うと きには, このGroup名にもとづいて分類されて,アイコンが表示され ます. 良くわからなかったら, ちょっとglintを起動して,アイコン名を見てみ ましょう. 付録にもRHLで用いているグループ名の一覧を示します. 個人使い用のrpmのときは,ぼくはとりあえずLocalとかにしてしまいます.人 に配布するときには真面目に考えましょう.
Packager
rpmパッケージを作ってるあなたの名前です. Email addressを入れておくと,思わぬとこからバグ報告とかもらえて 嬉しいこともあります.
Buildroot
節で説明した, 仮想インストールの ためのディレクトリ名を書きます.
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等を見てください.