我在spec文件中添加操作系统,因此生成的RPM包含OS和arch?

时间:2011-08-15 21:30:11

标签: linux rpm rpmbuild

我正在几个不同的虚拟机上构建软件包(CentOS5 32& 64,CentOS6 32& 64,Fedora等)。生成的RPM文件包含name.version.release.arch.rpm,如:

foo-1.1-1.i386.rpm

但相反,我希望它输出为:

foo-1.1-1.el5.i386.rpm

哪里(在规范文件中?.rpmmacros?)和如何这样做?

提前致谢。

2 个答案:

答案 0 :(得分:3)

在.spec文件中使用:

Release: 1%{?dist}

这取代于例如el6 RHEL6等至少在安装了“@Development tools”和rpmdevtools的Oracle Linux 6.5上。

答案 1 :(得分:1)

Release标记中:

Release: 1.el5

通常,人们会创建自定义定义,然后包含:

%define OSshort el5
Release: 1%{?OSshort}

然后,您还可以使用逻辑来根据您正在构建的操作系统来定义OSshort。

更新:我修改了Release标记,只有在定义时才使用OSshort。然后,您可以在spec文件中将其保留为undefined,并在构建命令

期间定义它
$ rpmbuild -bb --define 'OSshort _el5'

编写逻辑来测试操作系统/发行版并自动生成,这涉及解析这有点复杂,我现在找不到一个例子。