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パッケージをつくるソース名です.4.1節で設定した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を起動して,アイコン名を見てみ
ましょう.
付録AにもRHLで用いているグループ名の一覧を示します.
個人使い用のrpmのときは,ぼくはとりあえずLocalとかにしてしまいます.人
に配布するときには真面目に考えましょう.
Packager
rpmパッケージを作ってるあなたの名前です. Email addressを入れておくと,思わぬとこからバグ報告とかもらえて 嬉しいこともあります.
Buildroot
4.2節で説明した, 仮想インストールの ためのディレクトリ名を書きます.Buildrootの設定を行わなければ,RPM_BUILD_ROOTはnullです.
%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は消去されます.
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としていて,ファイル定義部(5.3節参照)で%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等を見てください.