rpmbuild 如何计算要生成哪些字段?

问题描述

在比较不同的 RPM 文件时,我注意到并非所有文件都公开相同的标头标签。所以必须有一些逻辑来激活/停用其中一些的创建。

一个例子是构建时间和主机。我偶然发现了两个 RPM 规范。两者都没有提到任何看起来像规范或提供信息的开关。尽管如此,其中一个是用 Build TimeBuild Host 字段生成的,另一个不是(我不允许发布任何一个)。

我知道新的 _buildhost 宏。用于生成两者的 RPM 版本不足以使用它。据我所知,这两个包都是从源列表中创建的。不显示构建信息的一个是使用 CMake/CPack 构建的,另一个直接使用 rpmbuild,这是我唯一了解的关于严重差异的信息。

两者都定义为 Group: AddOn。到目前为止,我还没有找到任何关于哪些组是有效的或其含义的远程确定资源。我唯一发现的是 Fedora 中的 list of deprecated 组。我对支持的列表更感兴趣,但到目前为止还没有成功。

到目前为止我发现的资源(省略无意义的): Max RPM Package Building PageRedHat blog-ish tutorialThe RPM build guideThe actual RPM tags documentationThe RPM packaging guide

遗憾的是,以上都没有提供我正在寻找的信息。

“Give a man a fish”问题: 如何在 Build Time 4.11 中禁止创建 Build Hostrpm,无论是在规范语法还是rpmbuild用法

“教一个人如何钓鱼”问题:是否有任何关于使用哪些设置创建的标题标签的文档?

解决方法

您可以使用 Mock 来构建 rpm(无论如何都推荐)。并使用 config_opts['hostname'] = 'my.own.hostname'。 Mock 将在 chroot 中调用 sethostname()。 这是AFAIK的唯一方法。

rpmbuild 应该尊重 SOURCE_DATE_EPOCH - 但我从未使用过它。 您可以使用以下方法设置环境变量: config_opts['environment']['SOURCE_DATE_EPOCH'] = 'foo'

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...