RPMスペックファイルで %{dist}
タグを使用して、Fedora Core(例:fc12
)、CentOS 5(例:el5
)、AmazonのLinuxAMI間のディストリビューション固有の依存関係を提供しようとしています。
Release: %_svn_revision%{?dist}
そして
# Depencencies
%{?rhel:Requires: ...}
%{?fedora:Requires: ...}
残念ながら、%{dist}
はCentOS5.5で定義されていないようで、CentOS 5.5に一致するディストリビューション固有の条件が見つかりませんでした(el5
は一致すると思いましたが、そうではないようです)。 This チケットは2008年にCentOSで%{dist}
が欠落していることを報告しましたが、2009年以降更新されていません。
CentOSで%{dist}
を定義するにはどうすればよいですか?また、CentOS 5に一致させるためにどの条件を使用する必要がありますか? RPMの達人が私を正しい方向に向けることはできますか?
/etc/rpm/macros.disttag
にないためCentOS5ではdistマクロが定義されていません-それを提供するbuildsys-macros-rhel
という名前のRPM、またはFedoraではbuildsys-macros
がありますが、何らかの理由でCentosによって再パッケージ化されていません。
オプション1)Fedoraビルドマクロを ここ からダウンロードしてインストールします
オプション2)毎回rpmbuild --define'dist.el5 'を呼び出す
オプション3)/etc/rpm/macros.disttagを手動で編集して、rhel(5)およびdist(.el5)のマクロ定義を追加します。
次に、スペックファイルで次のような条件を使用できます。
%if 0%{?rhel} == 5
%{Requires: foo}
%endif
別のオプションは、スペックファイル内の独自のマクロ内でスクリプトを呼び出すことです。
%define distribution %(/usr/lib/rpm/redhat/dist.sh --distnum)
これは、config rpm(redhat-rpm-config)の一部であるスクリプトを呼び出します。次のものを含めることで、このスクリプトが確実に存在するようにすることもできます。
BuildRequires: redhat-rpm-config
次に、ggirouxが定義したのと同じ条件を実行します。
%if %{distribution} == 5
Requires: glibc.i686, libXext.i386, libXtst.i386
%else
Requires: glibc.i686, libXext.i686, libXtst.i686
%endif