【问题标题】:Why do src rpms differ为什么 src rpm 不同
【发布时间】:2016-03-31 14:06:09
【问题描述】:

我一直在使用 mock 构建 rpm。这是一个像这样的两步过程。

mkdir buildsrpm
mock buildsrpm --spec myprogram-1.spec --sources myprogram-1.tar.gz --resultdir buildsrpm
mkdir rebuild
mock rebuild buildsrpm/myprogram-1.src.rpm --resultdir rebuild

第一步是构建源 rpm。第二步是构建 rpm。

在我使用的过程中,我创建目录来存储结果。

我在跑步时注意到了 diff -qrs buildsrpm/myprogram-1.src.rpm rebuild/myprogram-1.src.rpm 结果是他们不一样。

所以我的问题是:

  1. 为什么mock rebuild 会生成源rpm?显然我不需要,因为我提供了一个源 rpm 作为重建的输入。
  2. 为什么它们不同?
  3. 如果我正在创建一个存储库,是不是一个比另一个更好?

【问题讨论】:

  • diff 实际上报告的 SRPM 之间有何不同?任何有意义的或只是时间戳/等?比较rpm -qp --dump 的输出?
  • 我现在无法验证,但我知道常规 RPM 具有构建时间的时间戳信息; SRPM 也一样吗?

标签: mocking fedora rpm rpmbuild


【解决方案1】:

尝试在不同的 chroot 中运行它。例如:

mock -r fedora-23-x86_64  foo-1.0.16-1.fc22.src.rpm

你会注意到它会创建(除了二进制包)foo-1.0.16-1.fc23.src.rpm。查看 disttag 的区别。

使用来自 chroot 的 rpmbuild 命令在 chroot 内部构建生成的 SRPM。这可能会或可能不会导致差异(在那些 src.rpm 上尝试rpm -qpi)。在 Fedora 22 和 23 之间,除了“构建日期”之外可能没有区别(因此它们总是二进制不同)。但是 Epel-5 和 Fedora-23 在使用的​​校验和(MD5 vs. SHA)方面甚至会有差异。

如果您使用Mock's sign plugin,那么生成的 SRPM 甚至可以被签名。

总而言之,您应该使用重建的 SRPM 以保持安全。但是,原始 SRPM 通常也可以正常工作。

【讨论】:

  • 太棒了!谢谢你的解释。
猜你喜欢
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 2015-09-26
  • 2014-11-03
  • 2016-09-05
  • 2021-01-27
  • 2011-05-04
相关资源
最近更新 更多