RPMビルド時のデフォルトファイル名を変更する
自前でrpmをビルドした場合、出来上がるrpmのファイル名はspecファイルによって決まる。
specに指定がない場合、rpmbuildのデフォルトのパラメータが利用され、大体の場合
xxxxx-1.0.1-1.x86_64.rpm
のようなファイルが出来上がる。いくつかのOSが混在している環境でrpmをビルドすると、ファイル名が重複してしまいややこしい。
specを編集したりする方法もあるが、specファイル入のアーカイブからspecだけ取り出して編集するのは面倒であるし、できたファイルをいちいちrenameもしたくないので、rpmbuildの設定ファイルを変更する。
/usr/lib/rpm/macrosを編集し、
%_build_name_fmt %%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm
から
%_build_name_fmt %%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}%{dist}.%%{ARCH}.rpm
にするだけ。
以下仕組み。
rpmbuildの設定は以下のコマンドで参照する。
rpmbuild --showrc |less
rpmbuildの参照する設定ファイルは大体の場合以下のファイル。
/usr/lib/rpm/macros /usr/lib/rpm/redhat/macros /etc/rpm/macros.* ~/.rpmmacros
ファイル名に関連するのは_rpmfilenameで、さらに_build_name_fmtを参照しているようだ。
とりあえずCentOSの6と5を使い分けられればよいので…と思っていたら、いいパラメータがあったので使わせてもらう。
-14: dist .el6
el6.x86_64とかよく見る。
今回はビルドサーバーで作業する全員に反映したいので、~/.rpmmacrosでなく/usr/lib/rpm/macrosに設定した。これで、
xxxxx-1.0.1-1.el6.x86_64.rpm
というファイル名で出来上がってくることになる。
CentOS6.xでは、/etc/rpm/macros.distに上記のdistが定義されていたが、CentOS5.xではshowrcを見た感じ同じようなファイルはなかったので作成した。
cat <<'EOF' >/etc/rpm/macros.dist # dist macros. %rhel 5 %centos 5 %centos_ver 5 %dist .el5 %el5 1 EOF rpmbuild --showrc |grep dist -14: dist .el5
反映されている。あとは、CentOS6と同じように%distを%_build_name_fmtに入れ込めばOK。