%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の指定をします.