next up previous contents index
次へ: スクリプト部 上へ: specファイルを書く 戻る: specファイルを書く   目次   索引


データ定義部

データ定義部はlsmのように,パッケージに関する情報を記入する部分です.例の 各タグの意味は以下の通りです. スクリプト部で環境変数に代入されて用いられるものは,その環境変数名も書 いてます.
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
というふうに番号をふって列挙します. (Source0Source は同じ意味です)
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ファイルの一番下(ファイルリスト部の 下)に持って来ることもできます.
サンプルのspecファイルのような指定で,rpmパッケージをつくると, 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パッケージを作るときには,i386alphaなどのアーキテク チャに依存しないnoarchであることを,
    BuildArch: noarch
というふうに明示します.このような指定をしておくとnoarch.rpmとい う拡張子のつくrpmパッケージが作成できて,いろいろなアーキテクチャ上で 共用できます.

データ定義部には,さらにいろいろな情報を付け加えることもできます. MaximumRPM等を見てください.


next up previous contents index
次へ: スクリプト部 上へ: specファイルを書く 戻る: specファイルを書く   目次   索引
平成13年2月20日