Bar*_*ark 24 centos5 rpm rpmbuild
我正在尝试%{dist}在我的RPM规范文件中使用标记来提供Fedora Core(例如fc12),CentOS 5(例如el5)和亚马逊的Linux AMI 之间的特定于分发的依赖关系:
Release: %_svn_revision%{?dist}
Run Code Online (Sandbox Code Playgroud)
和
# Depencencies
%{?rhel:Requires: ...}
%{?fedora:Requires: ...}
Run Code Online (Sandbox Code Playgroud)
不幸的是,%{dist}似乎没有在CentOS 5.5中定义,并且我没有找到与CentOS 5.5匹配的特定于发行版的条件(我认为el5匹配,但似乎没有).这张票据报告了%{dist}2008年CentOS 的遗失,但自2009年以来一直没有更新.
我如何%{dist}在CentOS中定义以及我应该使用什么条件来匹配CentOS 5?任何RPM大师能指出我正确的方向吗?
ggi*_*oux 36
在CentOS 5上没有定义dist宏,因为它不在/etc/rpm/macros.disttag- 有一个命名的RPM buildsys-macros-rhel提供它,或者buildsys-macros在fedora上,但由于某种原因它没有被Centos重新打包.
选项1)从这里下载并安装fedora build-macros
选项2)每次都调用rpmbuild --define'dist .el5'
选项3)手动编辑/etc/rpm/macros.disttag以添加rhel(5)和dist(.el5)的宏定义.
然后,您可以在spec文件中使用这样的条件:
%if 0%{?rhel} == 5
%{Requires: foo}
%endif
Run Code Online (Sandbox Code Playgroud)
小智 5
另一种选择是在spec文件中调用自己宏中的脚本:
%define distribution %(/usr/lib/rpm/redhat/dist.sh --distnum)
Run Code Online (Sandbox Code Playgroud)
它调用一个脚本,它是config rpm(redhat-rpm-config)的一部分.您还可以通过包括以下内容确保此脚本存在:
BuildRequires: redhat-rpm-config
Run Code Online (Sandbox Code Playgroud)
然后执行ggiroux定义的相同条件:
%if %{distribution} == 5
Requires: glibc.i686, libXext.i386, libXtst.i386
%else
Requires: glibc.i686, libXext.i686, libXtst.i686
%endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16191 次 |
| 最近记录: |