问题描述
在比较不同的 RPM 文件时,我注意到并非所有文件都公开相同的标头标签。所以必须有一些逻辑来激活/停用其中一些的创建。
一个例子是构建时间和主机。我偶然发现了两个 RPM 规范。两者都没有提到任何看起来像规范或提供信息的开关。尽管如此,其中一个是用 Build Time
和 Build Host
字段生成的,另一个不是(我不允许发布任何一个)。
我知道新的 _buildhost
宏。用于生成两者的 RPM 版本不足以使用它。据我所知,这两个包都是从源列表中创建的。不显示构建信息的一个是使用 CMake/CPack 构建的,另一个直接使用 rpmbuild
,这是我唯一了解的关于严重差异的信息。
两者都定义为 Group: AddOn
。到目前为止,我还没有找到任何关于哪些组是有效的或其含义的远程确定资源。我唯一发现的是 Fedora 中的 list of deprecated 组。我对支持的列表更感兴趣,但到目前为止还没有成功。
到目前为止我发现的资源(省略无意义的): Max RPM Package Building Page、RedHat blog-ish tutorial、The RPM build guide、The actual RPM tags documentation、The RPM packaging guide
遗憾的是,以上都没有提供我正在寻找的信息。
“Give a man a fish”问题: 如何在 Build Time
4.11 中禁止创建 Build Host
或 rpm
,无论是在规范语法还是rpmbuild
的用法?
“教一个人如何钓鱼”问题:是否有任何关于使用哪些设置创建的标题标签的文档?
解决方法
您可以使用 Mock 来构建 rpm(无论如何都推荐)。并使用 config_opts['hostname'] = 'my.own.hostname'
。
Mock 将在 chroot 中调用 sethostname()
。
这是AFAIK的唯一方法。
rpmbuild 应该尊重 SOURCE_DATE_EPOCH
- 但我从未使用过它。
您可以使用以下方法设置环境变量:
config_opts['environment']['SOURCE_DATE_EPOCH'] = 'foo'