【问题标题】:Where in spec file do I add OS so resulting RPM contains OS and arch?我应该在规范文件的哪个位置添加操作系统,以便生成的 RPM 包含操作系统和拱门?
【发布时间】:2011-08-15 21:30:10
【问题描述】:

我正在几个不同的虚拟机(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?)以及如何我该怎么做?

提前致谢。

【问题讨论】:

    标签: linux rpm rpmbuild


    【解决方案1】:

    在 .spec 文件中使用这个:

    Release: 1%{?dist}
    

    这被替换为例如el6 RHEL6 等。至少在安装了“@Development tools”和 rpmdevtools 的 Oracle Linux 6.5 上。

    【讨论】:

      【解决方案2】:

      Release标签中:

      Release: 1.el5
      

      通常,人们会创建自定义定义,然后将其包括在内:

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

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

      更新:我修改了Release 标记,使其仅在已定义的情况下使用 OSshort。然后,您可以在规范文件中保留它未定义并在构建命令期间定义它

      $ rpmbuild -bb --define 'OSshort _el5'
      

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

      【讨论】:

      • 谢谢 - 我对 rpmbuild 很陌生。您能否详细说明我可以使用哪种类型的逻辑来生成 OS 标签?理想情况下,我希望在所有系统中使用相同的规范文件,并能够与其他人共享规范文件,以便它“正常工作”。
      • 我在下面的回答没有定义任何东西。 SteveJ,考虑将我的答案标记为解决方案。
      猜你喜欢
      • 2011-10-07
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 2014-05-27
      • 2010-10-17
      • 2013-08-29
      • 1970-01-01
      相关资源
      最近更新 更多