在CentOS 5.5上没有定义rpmbuild%{dist}?

时间:2011-02-27 19:56:31

标签: rpm centos5 rpmbuild

我正在尝试在RPM规范文件中使用%{dist}标记来提供Fedora Core(例如fc12),CentOS 5(例如el5)之间的特定于发行版的依赖关系亚马逊的Linux AMI:

Release: %_svn_revision%{?dist}

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

不幸的是,%{dist}似乎没有在CentOS 5.5中定义,我没有找到与CentOS 5.5匹配的特定于发行版的条件(我认为el5会匹配,但不会'似乎)。 This门票在2008年报告了CentOS中失踪的%{dist},但自2009年以来一直没有更新。

如何在CentOS中定义%{dist}以及我应该使用什么条件来匹配CentOS 5? 任何RPM大师能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:36)

在CentOS 5上没有定义dist宏,因为它不在/etc/rpm/macros.disttag中 - 有一个名为buildsys-macros-rhel的RPM提供它,或者在fedora上有buildsys-macros,但是某些原因它没有被Centos重新包装。

选项1)从here

下载并安装fedora构建宏

选项2)每次调用rpmbuild --define'dist .el5'

选项3)手动编辑/etc/rpm/macros.disttag以添加rhel(5)和dist(.el5)的宏定义。

然后,您可以在规范文件中使用这样的条件:

%if 0%{?rhel}  == 5
%{Requires: foo}
%endif 

答案 1 :(得分:5)

另一种选择是在spec文件中调用自己宏中的脚本:

%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