我正在几个不同的虚拟机上构建软件包(CentOS5 32 & 64,CentOS6 32 & 64,Fedora等)。所得RPM文件包含name.version.release.arch.rpm,如:在spec文件中,我添加了操作系统,因此生成的RPM包含操作系统和arch?
foo-1.1-1.i386.rpm
但是,相反,我希望它输出:
foo-1.1-1.el5.i386.rpm
凡(在spec文件?.rpmmacros?)和我该怎么做?
在此先感谢。
我正在几个不同的虚拟机上构建软件包(CentOS5 32 & 64,CentOS6 32 & 64,Fedora等)。所得RPM文件包含name.version.release.arch.rpm,如:在spec文件中,我添加了操作系统,因此生成的RPM包含操作系统和arch?
foo-1.1-1.i386.rpm
但是,相反,我希望它输出:
foo-1.1-1.el5.i386.rpm
凡(在spec文件?.rpmmacros?)和我该怎么做?
在此先感谢。
在的.spec文件使用这样的:
Release: 1%{?dist}
这被取代,以例如el6 RHEL6等。至少在Oracle Linux 6.5上安装'@Development tools'和rpmdevtools。
在Release
标签:
Release: 1.el5
通常,人们创建一个自定义定义,然后包括:
%define OSshort el5
Release: 1%{?OSshort}
然后,你也可以用逻辑来定义OSshort基于什么操作系统你正在重建。
更新:我修改了Release
标记,只在使用OSshort时才定义。然后,你可以把它留在规范文件中没有定义和构建命令
$ rpmbuild -bb --define 'OSshort _el5'
中定义它写入逻辑来测试OS /分布,并自动生成需要解析,这是一个有点复杂,我无法找到一个现在的例子。
谢谢 - 我对rpmbuild很陌生。您能否详细介绍一下我可以使用什么类型的逻辑来生成操作系统标签?理想情况下,我希望在所有系统中使用相同的spec文件,并且能够与其他人共享spec文件,以便“只是运行”。 – SteveJ
这很好。谢谢。 :) – SteveJ
我的答案下面的作品没有定义任何东西。 SteveJ,考虑将我的答案作为解决方案。 –