web-dev-qa-db-ja.com

rpmbuild%{dist}がCentOS 5.5で定義されていませんか?

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の達人が私を正しい方向に向けることはできますか?

24
Barry Wark

/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 
36
ggiroux

別のオプションは、スペックファイル内の独自のマクロ内でスクリプトを呼び出すことです。

%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
5
hughmcmanus