
- コンパクトで軽量な日本語ディストリビューション -
%filesはじまる部分で、RPMパッケージに収録するファイル名を列挙します。
# ファイルリスト部 -------------- %files %defattr(-,root,root) %doc README %doc docs/ /usr/bin/hoge.bin /usr/lib/hoge/ /usr/man/man1/hoge.1.gz %dir /usr/lib/hoge/ %config /usr/lib/hoge/fuga.conf
このとき以下に注意してください。
rpmbuildコマンドは、SPECファイルに基づいてRPMパッケージを作るときに、 セクション II.5.2 - スクリプト部で設定した一連のスクリプトを実行した後、 ${RPM_BUILD_ROOT}をとみなして%files以下で指定されたファイルを回収し、 それを指定位置にinstallするようなRPMパッケージをつくります。
%docというマクロを用います。例 II.5-7のように、%doc READMEとすると、 %setupで指定したホームディレクトリ下のREADMEが、 ${RPM_BUILD_ROOT}/usr/doc/hoge-1.1-2/にcpされたのち、 rpmパッケージに回収されます。つまり%docは、 ドキュメントファイルのインストールとパッケージングのためのファイル指定を同時に行うマクロとしてはたらきます。 以下のように、ディレクトリごと指定もできます。
%doc doc/
その絶対パスで指定します。
rpm-3.0.5以降では、man ファイルや info ファイルは自動的にgzipで圧縮されます。 %filesにmanやinfoのファイル名を書くときには拡張子.gzをつけるのを忘れないようにしましょう。
指定したディレクトリだけをパッケージに含める。
``/usr/hoge/'' = ``%dir /usr/hoge/'' + ``/usr/hoge/*''
configファイルであることを示す。 ファイルが書き換えられていた場合、 アンインストール時には .rpmsaveをつけた名前で保存されます。 アップグレード時には新しいファイルと置き換えられ、 元のファイルは .rpmsaveをつけた名前で保存されます。
ファイルが変更されていた場合、 アップグレード時に新しいファイルに置き換えずにもとのファイルをそのまま使う場合には、 %config(noreplace) を指定します。
%config(noreplace) <file name>
存在しなくても問題ないファイルの場合は、 %config(missingok) を指定します。
%config(missingok) <file name>
%filesに列挙するファイルのパーミッションやuser ID、group IDを設定する。 例えば、
%attr(755,root,root) /usr/lib/hoge
%attr(755,-,root) /usr/lib/hoge
%attr(755,root,root)
%attr(755,root,root,755)
それ以降の行に書かれた属性のデフォルト値を設定する。 %attr が出てきた行を除いて、それ以降に書かれたものに共通になります。
%defattr も %attr も何度でも使えます。 次の例だと、/usr/bin/hoge と /usr/lib/hoge は一つ目の %defattr の 755 になり、 /usr/share/locale/ja 以降は二つ目の %defattr の 644 になります。
%defattr(755,-,-) /usr/bin/hoge /usr/lib/hoge %defattr(644,-,-) /usr/share/locale/ja /usr/share/locale/lv
%attrと同様、4つ目の数字は、 ディレクトリとサブディレクトリのパーミッションになります。
%filesに列挙するファイルについて、rpm -V でパッケージを検証する時に、検証する項目を指定する。
( ) の中には表 II.5-5にあるものが入ります。 複数指定する場合には、, もしくは スペース で区切ります。
| 項目 | 内容 |
|---|---|
| size | サイズ |
| mode | パーミッションとファイルの種類 |
| md5 | md5 値 |
| rdev | デバイスファイルのモードビットなど |
| link | リンク先 |
| user | ファイルの所有者 user |
| group | ファイルのグループ group |
| mtime | ファイルの更新時刻 mtime(modification time) |
not とすると検証しない項目だけを指定できます。
書き換えることが前提となる設定ファイルなので、ファイルサイズ と md5値 と 更新時刻 は検証する必要がないといった場合には、
%verify(not size,md5,mtime) /etc/hoge.conf
それ以降の行に書かれたファイルについて検証する項目を設定します。
%verify と %defverify は、%attr と %defattr と同じような関係です。
%config %attr %verify などは、次のようにスペースを入れることで一つのファイルに複数指定できます。
%config %verify(not size,md5,mtime) /etc/hoge.conf
この%filesの指定は少々面倒なとこかもしれません。 新しくパッケージをつくる場合などは、%install までのスクリプト部を書いたところで、%files以下は何も書かないまま、一度、そのSPECファイルから rpm をbuildしてみるとよいかもしれません。(rpm -bi hoge.spec これについては次節)。 そのあとで、${RPM_BUILD_ROOT}以下にinstallされてるファイルを、find コマンドで見てみて%filesの指定をします。
%filesで書かれていないファイルがある場合には、build 時に
パッケージに未収録のファイルを検査中: /usr/lib/rpm/check-files /var/tmp/hoge-1.1-root 警告: パッケージに未収録のインストール済みファイルが見つかりました:
ソースのバージョンアップなどで、作成されるファイルが増減したり、ディレクトリが変わったりする場合があります。未収録のファイルがあっても、build が途中で終了せず、パッケージを作成できてしまう場合があるので、build 時のメッセージは必ず確認してください。
Requires で他のパッケージをまとめてインストールしたり、%post, %preun, %postun などで何らかのコマンド処理を行うようなパッケージ。task-gnome や task-tetex などのように task- という名前が使われます。