%files
はじまる部分で, rpmパッケージにつめこむファイル名を列挙します.このとき以下に注意してください.
%doc
で指定するものを除いて, %install
までのスクリプトの実行によって,
記述した通りの場所(${RPM_BUILD_ROOT}
を''/''とみなす) にinstallされるものでないといけません.
userID/groupID
を持っていると,
rpmパッケージが正常にbuildできないことがあります. rpmコマンドは, specファイルに基づいてrpmパッケージを作るときに,
(2)で設定した一連のスクリプトを実行した後,${RPM_BUILD_ROOT}
を/
とみなして%files
以下で指定されたファイルを回収し,それを指定位置に
installするようなrpmパッケージをつくります.
%doc
というマクロを用います.specファイルの例のように,%doc README
とすると,%setup
で指定したホームディレク トリ下のREADME
が,${RPM_BUILD_ROOT}/usr/doc/hoge-1.1-1/
にcpされたのち,rpmパッケージに回収されます.つまり%doc
は,ドキュメントファイルのインストールとパッケージングの ためのファイル指定を同時に行うマクロとしてはたらきます. 以下のように,ディレクトリごと指定もできます.%doc doc/
/usr/bin/hoge.bin
など)
/usr/hoge/
など).アンインストール時には,そのディ レクトリごとなくなります.
/usr/hoge/*
など)
%files
にmanやinfoのファイル名を書く
ときには拡張子.gz
をつけるのを忘れないようにしましょう。 %dir <dir name>
指定したディレクトリだけをパッケージに含める.
``/usr/hoge/'' = ``%dir /usr/hoge/'' + ``/usr/hoge/*''
ってかんじです.
%config <file name>
configファイルであることを示す. アップグレード時にはoverwriteされず,古いファイルは.rpmsaveをつけ た名前で保存されます.
%attr(<mode>,<user>,<group>) <file
name>
%files
に列挙するファイルのパーミッションやuser ID
,group ID
を設定する.例えば,
%attr(755,root,root) /usr/lib/hoge
とする.一部の属性を省略(書き換えない)したいときには-
を使って,
%attr(755,-,root) /usr/lib/hoge
とする.このタグを用いる ことによって,root権限を持ってない人もrpmのパッケージ化を行える.
%defattr(<mode>,<user>,<group>)
(rpm-2.5系より)
属性のデフォルト値を設定する.
%files
の指定は少々面倒なとこかもしれません.ぼくは,%install
あたりまでの,スクリプト部を書いたところで,
%files
以下は何も書かないまま,一度,そのspecファイルから rpm をbuildします. (rpm -bi hoge.spec
これについては次節). そのあと, ${RPM_BUILD_ROOT}
以下にinstallされてるファイルを,find
コマンドで見てみて%files
の指定をします.