我正在尝试在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大师能指出我正确的方向吗?
答案 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