スクリプト部 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
	
というふうに番号をふって列挙します. (Source0 と Source は同じ意味です)
Patch
上で設定したソースにあてる,パッチファイルです. 書式は Sourceと同じです. このパッチファイルもディレクトリ SOUCESに置いときましょう. 複数あるときにも,Sourceと同様に番号をふって列挙できます.
Copyright
作成するrpmパッケージの著作権を書きます. もとのソースの Copyright とかを良く読んで, できるだけ簡潔に書きましょう.
Group
つくるパッケージのカテゴリーを書きます.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ファイルの一番下(ファイルリスト部の 下)に持って来ることもできます.
サンプルの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等を見てください.


スクリプト部 specファイルを書く 目次 ファイルリスト部