RPMパッケージの作成 | ||
---|---|---|
<<< Previous | Chapter 5. specファイルを書く | Next >>> |
%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/ |
rpmに含めるファイルの指定
その絶対パスで指定します。
個別ファイルはそのまま指定。(/usr/bin/hoge.bin など)
あるディレクトリ以下の全てのファイルをrpmパッケージにいれたいときには、 そのディレクトリ名を書きます。(タグなし、/usr/hoge/ など)。 アンインストール時には、そのディレクトリごとなくなります。
ワイルドカードも使えます。(/usr/hoge/* など)
![]() | rpm-3.0.5以降では、man ファイルや info ファイルは自動的にgzipで圧縮されます。 %filesにmanやinfoのファイル名を書くときには拡張子.gzをつけるのを忘れないようにしましょう。 |
タグを用いたファイル指定
指定したディレクトリだけをパッケージに含める。
``/usr/hoge/'' = ``%dir /usr/hoge/'' + ``/usr/hoge/*'' |
configファイルであることを示す。 アップグレード時にはoverwriteされず、 古いファイルは.rpmsaveをつけた名前で保存されます。
%filesに列挙するファイルのパーミッションやuser ID、 group IDを設定する。例えば、
%attr(755,root,root) /usr/lib/hoge |
%attr(755,-,root) /usr/lib/hoge |
属性のデフォルト値を設定する.
この%filesの指定は少々面倒なとこかもしれません。 ぼくは、%installあたりまでの、スクリプト部を書いたところで、 %files以下は何も書かないまま、一度、そのspecファイルから rpm をbuildします。 (rpm -bi hoge.spec これについては次節)。そのあと、 ${RPM_BUILD_ROOT}以下にinstallされてるファイルを、 find コマンドで見てみて%filesの指定をします。
<<< Previous | Home | Next >>> |
スクリプト部 | Up | 書いたspecファイルをもとにrpmパッケージをつくる |