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 上定义?的主要内容,如果未能解决你的问题,请参考以下文章