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

Posted

技术标签:

【中文标题】rpmbuild %dist 没有在 CentOS 5.5 上定义?【英文标题】:rpmbuild %dist not defined on CentOS 5.5?rpmbuild %dist 没有在 CentOS 5.5 上定义? 【发布时间】:2011-07-05 08:44:28 【问题描述】:

我正在尝试在我的 RPM 规范文件中使用 %dist 标签来提供 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 会匹配,但似乎没有) . Thisticket 报告了 2008 年 CentOS 中缺少的 %dist,但自 2009 年以来一直没有更新。

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

【问题讨论】:

【参考方案1】:

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

%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

【讨论】:

【参考方案2】:

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

选项1)从here下载并安装fedora build-macros

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

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

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

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

【讨论】:

el5 的构建宏成功了。感谢您的精彩回答。 请注意,从 CentOS 5.7 开始,buildsys-macros 在发行版中可用。见Redhat Advisory 和Redhat Bug 613985

以上是关于rpmbuild %dist 没有在 CentOS 5.5 上定义?的主要内容,如果未能解决你的问题,请参考以下文章

CentOS下的RPM包制作教程收集(rpmbuild)

Linux操作系统使用RPMBUILD命令打包RPM的详细步骤

Centos Kernel编译rpm包

Centos6.5 Intel X722 编译安装网卡驱动

如何让 rpmbuild 下载特定 .spec 的所有源?

linux之使用rpmbuild打rpm包