前のページ 次のページ 目次

1. spec ファイルで使用できるタグ/マクロ/環境変数一覧

索引(アルファベット順)

AutoProv AutoReq AutoReqProv
BuildArchitectures BuildRoot BuildConflicts: BuildRequires:
Conflicts Copyright
Distribution DocDir
ExcludeArch ExcludeOS ExclusiveArch ExclusiveOS
Group
Icon
Name NoPatch NoSource
Obsoletes
Packager Patch Prefix Prefixes PreReq Provides
Release Requires
Serial Source Summary
URL
Vendor Version
%attr
%build
%changelog %clean %config
%defattr %define %defverify %description %dir %doc
%else %endif
%files
%ghost
%ifarch %ifnarch %ifnos %ifos %install
%lang
%package %patch %pre %prefix %prep %preun %post %postun
%setup
%trigger
%verify %verifyscript
$RPM_ARCH
$RPM_BUILD_DIR
$RPM_BUILD_ROOT
$RPM_DOC_DIR
$RPM_OPT_FLAGS
$RPM_OS
$RPM_PACKAGE_NAME
$RPM_PACKAGE_RELEASE
$RPM_PACKAGE_VERSION
$RPM_ROOT_DIR
$RPM_SOURCE_DIR
$RPM_INSTALL_PREFIX

1.1 パッケージ定義部(Preamble Tags)

パッケージ定義部の順番は特に気にする必要はないがサブパッケージを 作成するために、%package マクロを使用するときは メインパッケージの Name Version Release Summary Group Copyright などを定義をした後、 %package マクロを書きサブパッケージの パッケージ定義をすること。 つまりサブパッケージの定義は必ずメインパッケージの定義の後に行うこと。 (注: (MUST) は必須なもの)

パッケージするソフトウェア名。(MUST)

パッケージするソフトウェアのバージョン。(MUST)

このRPMパッケージのリリース番号。(MUST)

RPM が RPM パッケージのバージョンの新旧を間違える恐れがある場合、 このタ グを使用しておけば、間違わないようになる。 (Version: タグにアルファベッ トが入るときなど間違うことがある。)

パッケージの説明を書く。 Summary:と違い複数行書くことができ、書いたそのままに出力される。

パッケージに対する説明を書く(一行)。(MUST)

著作権を書く(GPLなど)。(MUST)

RPM パッケージを含むパッケージ集などの名前を書く。

RPM パッケージをパッケージしたベンダ名を書く。

このソフトウェアが分類されるグループ名を指定する(rpm-2.5より空白でも可)。(MUST)

パッケージ作製者の名前を書く。(複数可)

パッケージするソフトウェアのついてのより詳しい情報の得られる URLを記入する。

パッケージ作成に必要なソースファイル名を指定する。 ソースファイルが複数あるときは[<n>]に 0 から番号をつける。 一つしかないときは 0 を付けても付けなくても良い。 ソースファイル名にはそのソースファイルが存在する URL を含めた指定も可能. (この場合 URL 部分は無視される。 つまり $RPM_SORCE_DIR にソースファイル を置いておかねばならない。)(MUST) (例) Source0: ftp://ftp.foo.or.jp/pub/linux/hoo.tar.gz

src.rpm を作成するときに、src.rpmに含めたくないソースファイルの番号を指定する。 こうしておくとsrc.rpmパッケージを作成しても、そのパッケージ中には NoSource: で指定したソースファイルは含まれない。 この場合、src.rpm という拡張子ではなく nosrc.rpm となる。 もちろん src.rpm(nosrc.rpm) の作製者は src.rpm(nosrc.rpm)を作成するとき には、 $RPM_SOURCE_DIR に該当するソースファイルが全てなくてはならない。

パッケージ作成に必要なパッチファイル名を指定する。 パッチファイルは gzip もしくは bzip2 で圧縮されていても OK。 パッチファイルが複数あるときは [<n>] に 0 から番号をつける。 一つしかないときは 0 を付けても付けなくても良い。 パッチファイル名にはそのパッチファイルが存在する URL をを含めた指定も可能。 (この場合 URL 部分は無視される. つまり $RPM_SORCE_DIR に パッチファイル を置いておかねばならない。) (例) Patch0: ftp://ftp.foo.or.jp/pub/linux/patch.gz

NoSource:Patch: 版。

<arch> に指定されたアーキテクチャ上ではパッケージを作成できない。

<arch> に指定されたアーキテクチャ上でのみパッケージを作成できる。

<os> に指定されたOS上ではパッケージを作成できない。

<os> に指定された OS 上でのみパッケージを作成できる。

glint 等でパッケージを表示するときに、 その RPM パッケージをあらわすアイコンファイル名を書く。 RPM パッケージ作成時にはここで指定したアイコンファイルを $RPM_SOURCE_DIR に置いておく。アイコンファイルの形式は GIF もしくは XPM 形式。

仮想パッケージ <x> を提供する。 (例)あるフォートランコンパイラのパッケージに Provides: fortran とあればこのパッケージは fortran を提供していることになる。 そしてこのパッ ケージを置き換えることのできるソフトウェア として 違うフォートランコンパ イラを RPM パッケージ化し、依存性を満たすようにインストールするには、 そ のの RPM パッケージに Provides: fortran と書いておけば、fotran を必要と する他のパッケージの 依存性を乱すこと無くインストールできる。 spec ファイル中に複数使用可。 バージョン指定も可能。

この RPM パッケージをインストールして使用するには、 <x> が必要とな ることを明示する。<x> についてバージョン依存性があるのなら、 >、 <、=、<=、>= にて指定できる。

(例) perl >= 5.0004 perl =S 4 (Serial(タグの) 番号指定時)

(注)RPM はパッケージ作成時にライブラリ、スクリプト言語等については 依存 性を自動的に調べる。

%pre、%post、%postun、%preun などで実行する コマンド等、 パッケージをインストール時に予め必要なコマンド(path)もしく はパッケージ名。 バージョン指定も可能。

<x> がインストールしてあると競合してしまうものについて記述する。 <x> についてバージョン依存性があるのなら、 >、<、=、<=、 >= にて指定できる。 (例) perl >= 5.0004 perl =S 4 (Serial(タグの) 番号指定時)

このパッケージをアップグレードすると、古くさくなってしうパッケージを 削 除するときそのパッケージを指定するタグ。 バージョン指定も可能。

%files にあるファイルリストのこのタグで指定されたパスの部分は、 \-\-prefix オプションで指定するパスに置き換えて インストールが可能であるこ とを示す。spec ファイル中で %spec として 使用可能。

Prefix: で指定した <path> に置換されるマクロ。

パッケージに一つ以上の Prefix: を指定できるもの。 各 prefix は空白をあけ て指定する。

パッケージ作成時に <path> で指定されたところに仮に インストールす ることを示すタグ。このタグを使用することによりパッケージ作成時に、 異な るディレクトリツリーにインストールすることが可能になり、 使用中のシステ ムのディレクトリツリーが上書きされることを防ぐことができる。 ただし、このタグを使用したからといって %install で自動的に この <path> 以下にインストールされるわけではない。 (%files 以下のチェックは自動的にこの <path> 以下が調べられ る。) \-\-buildroot オプションで変更可能。

この SPEC ファイルを利用して作成するパッケージの種類(i386,noarch,...)を 指定する。

パッケージ作成時に作成するマシン上に存在すると競合を起こし、 作成できないパッケージ名を指定する。 (例: BuildConflicts: net-tools <= 1.0)

パッケージ作成時に作成するマシン上に存在していないと 作成できないパッケージ名及びファイル名を指定する。 (例: BuildRequires: util-linux >= 5.0, /bin/ls)

RPM は RPM パッケージを作成するとき、自動的にシェアードライブラリ、 必要 となるスクリプト言語の依存性と提供する機能を調べる。 これを行うかどうかのスイッチ。 yes の代わりに true、1、no の代わりに 0、failure も使用できる。

RPM がパッケージ作成時に自動的に行うインストールして使用するために 必要 となるものの調査を行うかどうかのスイッチ。 yesの代わりに true、1、no の代わりに 0、failure も使用できる。

RPM がパッケージ作成時に自動的に行うインストールすると提供されるものの 調査を行うかどうかのスイッチ。 yesの代わりに true、1、no の代わりに 0、failure も使用できる。

/usr/doc から <dir> へ文書ディレクトリを変更。

サブパッケージについてのタグをこれ以下に定義する。 このサブパッケージ RPM 名は メインパッケージ名(おおもとの Name:) -メインパッケージのバージョン番号(おおもとの Version:) -メインパッケージの RPM リリース番号 となる。 -n を定義すると サブパッケージ RPM 名は、 サブパッケージ名(%package の後ろに定義したもの) -サブパッケージのバージョン番号(%package 以降の行に定義したもの) -メインパッケージのrpmのリリース番号 となる。

変更履歴。

    * Fri Aug 21 1998 Kanda Mitsuru <kanda@nn.iij4u.or.jp>
    - C-c l のテスト 

のように 日付は 行頭に * を付け 曜日 月 年 名前の順で書くこと。 date '+%a %b %d %Y' の出力の後に 変更したユー ザ名をつけたもの。 新しくchangelogを付け足すときは必ず新しいものを上の方に 書き足していくこと。

1.2 パッケージ作成部

(%prep,%build,%install,%clean) (デフォルト値)
$RPM_SOURCE_DIR = /usr/src/redhat/SOURCES
$RPM_BUILD_DIR = /usr/src/redhat/BUILD
$RPM_DOC_DIR = /usr/doc
$RPM_OPT_FLAGS = rpmrc 参照 (-O2 -m486 -fno-strength-reduce,etc)
$RPM_ARCH = rpmrc 参照 (i386,etc)
$RPM_OS = rpmrc 参照 (Linux,etc)
$RPM_ROOT_DIR = パッケージ作成時のルートディレクトリとなるもの
$RPM_BUILD_ROOT = Buildroot: or \-\-buildroot
$RPM_PACKAGE_NAME = Name: 
$RPM_PACKAGE_VERSION = Version: タグの内容
$RPM_PACKAGE_RELEASE = Release: タグの内容 

umask 022 に設定。 $RPM_BUILD_DIR へ ``cd'' し、ソースツリーが存在していたら ``rm -rf'' を実行。

ソースファイルの展開。 [options]:
    -a<n> : n番目のソースを展開した後に。
    -b<n> : n番目のソースを展開する前に。
    -c : 展開して cd する先のディレクトリを作成する。
    -D : 展開する時に前に展開したディレクトリを消去しない。
    (-a や -b -T オプションとともに使われることが多い。)
    -n <name> : 展開して cd する先のディレクトリ名。
    -T : 展開するときに Source0 を再び展開しない。
    -a や -b -D オプションとともに使われることが多い。
    -q : quietly(出力を抑制する。)
``gzip -dc ソースファイル |tar -xvvf -'' もしくはソースファイルが .bz2 ならば、 ``bzip2 -dc ソースファイル |tar -xvvf -'' によってソースファイルを展開する。 -n <name> で <name> が指定されていなければ、 $RPM_BUILD_DIR/${NAME}-${VERSION}へ ``cd'' し、指定されていれば、 $RPM_BUILD_DIR/<name>へ ``cd'' する。; そして ``chown -R root . '' (root が rpm コマンドを実行しているときのみ) ``chgrp -R root . ''(root が rpm コマンドを実行しているときのみ) ``chmod -R a+rX,g-w,o-w .'' が実行される。

パッチ当て。 [options]:
    -P<n>: Patch<n> を指定。
    -p<n>: patch コマンドの -p オプションと同じ。
    -b <name>: パッチを当てる前のファイルの拡張子を<name> にする。
    -E: パッチを当てた後、空になったファイルを削除する。

実際にプログラムを作成するためのタグ(make、configure等を記述)。

インストール時に行うことを記述 (make install等)。

ビルドしたディレクトリツリーを消去することなどを記述する。 (例: rm -rf $RPM_BUILD_ROOT)

1.3 パッケージインストール部

-p オプション
%pre*/post* の中身が空で -p <プログラムのパス> が指定されて いれば それが実行される。この -p で指定されたプログラムは prerequisite として登録される(そうでなければ /bin/sh)。

(%pre、%post、%preun、%postun、%verifyscript) $RPM_INSTALL_PREFIX=パッケージインストール時のパスの接頭辞

パッケージをインストールする前にすることを記述。

パッケージをインストールした後にすることを記述。

パッケージをアンインストールする前にすることを記述。

パッケージをアンインストールした後にすることを記述。

パッケージの照合(verify)時に実行されるスクリプト。

<trigger> には trigger を引き起こすパッケージを書く。<=>を 使ってバージョンを指定しても良い。

1.4 ファイルリスト部

インストールするファイルを列挙。 -f <file> はンストールされるファイルをリストした <file> を指定。 -n <name> はサブパッケージ <name> のファイルリスト。

ドキュメントファイル <file> はデフォルトで /usr/doc/<name>-<version> ディレクトリに置かれるようになる。

設定ファイルなどインストールの後に更新されるもの。 (missingok)は存在していなくても良いもの。 (noreplace)は置き換えては行けないもの。

文書ディレクトリ。

パッケージのみが使うディレクトリ。

常にあるとは限らないファイル(ログファイルなど)。

ある言語に属するファイルを指定する。 (%lang(ja,de,fr) という指定も可能)

RPMによって照合される9つのファイル属性のコントロール。 一般ユーザがパッケージを作成したときなどでは、インストール時に %doc 等が作製者の属性になるのを防ぐために用いる。

defattr()以下に列挙されているの全てのファイル (もしくは他の %defattr()が出てくるまで)のデフォルト属性を設定する。 つまり複数 のファイルをいっぺんに指定できる %attr()。

RPM がファイルを照合するときに不必要な属性までチェックしないように チェッ クする属性を指定。

%defverify()以下の全てのファイル(もしくは他の%defverify() が出てくるまで) のデフォルトパラメータを設定する。 つまり複数のファイルをいっぺんに指定できる %verify()。

1.5 条件式

スペックファイル中にスクリプトの部分でシェルの制御文も使用可能。

<arch> ならば...

<arch> でないならば...

<os> ならば...

<os> でないならば...

1.6 マクロの定義/使用

行頭に%defineがあるときのみ動作する。 使用するときは、 %<name> もしくは %{<name>}を用いる。


前のページ 次のページ 目次