24

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

Release: %_svn_revision%{?dist}

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

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

如何%{dist}在 CentOS 中定义,我应该使用什么条件来匹配 CentOS 5?任何 RPM 专家都可以为我指明正确的方向吗?

4

2 回答 2

36

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

选项 1) 从这里下载并安装 fedora build-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)

它调用一个脚本,该脚本是配置 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 回答