24

RPMスペックファイルのタグを使用して、 Fedora Core(例)、CentOS 5(例)、AmazonのLinuxAMI間の%{dist}ディストリビューション固有の依存関係を提供しようとしています。fc12el5

Release: %_svn_revision%{?dist}

# Depencencies
%{?rhel:Requires: ...}
%{?fedora:Requires: ...}

残念ながら、%{dist}CentOS 5.5で定義されていないようで、CentOS 5.5に一致するディストリビューション固有の条件が見つかりませんでした(一致すると思いましel5たが、そうではありません)。このチケット%{dist}は2008年にCentOSで欠落していることを報告しましたが、2009年以降更新されていません。

CentOSで定義するにはどうすればよい%{dist}ですか?また、CentOS 5と一致させるためにどの条件を使用する必要がありますか?RPMの達人は私を正しい方向に向けることができますか?

4

2 に答える 2

36

distマクロはCentOS5に含まれていないため、定義されていません。それを提供する/etc/rpm/macros.disttag名前のRPMまたはfedoraがありますが、何らかの理由でCentosによって再パッケージ化されていません。buildsys-macros-rhelbuildsys-macros

オプション1)ここからfedorabuild-macrosをダウンロードしてインストールします

オプション2)毎回rpmbuild--define'dist.el5'を呼び出す

オプション3)/etc/rpm/macros.disttagを手動で編集して、rhel(5)およびdist(.el5)のマクロ定義を追加します。

次に、スペックファイルで次のような条件を使用できます。

%if 0%{?rhel}  == 5
%{Requires: foo}
%endif 
于 2011-03-31T03:41:37.580 に答える
5

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

%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
于 2013-01-04T10:43:00.893 に答える