
- コンパクトで軽量な日本語ディストリビューション -
SPEC ファイルのエンコーディング等を確認する。
$ rpm -qpi hoge.rpm$ LANG=C rpm -qpi hoge.rpmChangelog の記述を確認する。
$ rpm -qp --changelog hoge.rpm | head依存関係(Requires)を確認する。
$ rpm -qpR hoge.rpmパッケージがシェルスクリプトのファイルなどを含んでいる場合、その中で利用されるコマンド(もしくはパッケージ)が Requires: で指定されているかを確かめる必要もあります。これは、実際にシェルスクリプトを実行するなどして確かめる必要があります。
RPMパッケージをbuildするときには、 そのパッケージに含まれるバイナリの実行に必要なライブラリ名も、 自動的にRequiresに加えられます(正確には必要なライブラリのsonameが加えられます)。 rpmパッケージをinstallするときに、必要なライブラリがシステム上にないと、 libhoge.so is neededとかいって、おこられますが、 libhoge.soがなんというパッケージに入ってるかわからずに困ることがよくあるので、 必要なパッケージ名をきちんとRequiresに書くように心がけましょう。
筆者はbuildした時に出力されるメッセージの
Requires: /bin/sh libICE.so.6 libORBit-2.so.0
$ for i in libICE.so.6 libORBit-2.so.0 ; do slocate $i |xargs rpm -qf ; done | sort -u
build 時の依存関係(BuildRequires)を確認する。
できあがった src.rpm を、BuildRequires で指定していない devel などのパッケージをアンインストールした状態で rebuild してみる。
*-devel というパッケージをアンインストールするのに、筆者は(bash で)次のようなコマンド(for文)を利用しています。sed や awk で処理してる部分はもう少し上手なやり方があるかもしれません。
ローカルに apt のリポジトリを作成しておくと、apt-get install や apt-get build-dep で、依存関係のチェック等が行えて便利です。