rpmbuild%{dist}未在CentOS 5.5中定义?

rpmbuild%{dist}未在CentOS 5.5中定义?

问题描述:

我试图使用%{dist}标签在我的RPM规范文件提供的Fedora Core(如fc12),CentOS 5的(如el5)和亚马逊公司的Linux AMI之间的具体分布依赖性:rpmbuild%{dist}未在CentOS 5.5中定义?

Release: %_svn_revision%{?dist} 

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

不幸的是,%{dist}没有出现在CentOS的5.5加以界定,而我还没有找到相匹配的CentOS 5.5(我想el5将匹配,但不会出现)分发特定的条件。 This票报CentOS的缺失%{dist}在2008年,但自2009年以来

我怎样才能%{dist}在CentOS的定义,我应该用什么条件来匹配的CentOS 5一直没有更新? 任何RPM专家都可以指出我的方向吗?

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

选项1)下载并安装Fedora构建的宏从here

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

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

然后可以使用这样的条件语句在您的spec文件:

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

集结宏EL5的伎俩。谢谢你的回答。 – 2011-04-01 02:59:35

+0

请注意,从CentOS 5.7开始,发行版中提供了'buildsys-macros'。参见[Redhat Advisory](http://rhn.redhat.com/errata/RHEA-2011-0985.html)以及[Redhat Bug 613985](https://bugzilla.redhat.com/show_bug.cgi?id = 613985) – 2013-09-11 21:53:49

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

%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