为什么src rpms不同

时间:2016-03-31 14:06:09

标签: mocking fedora rpm rpmbuild

我一直在用mock建立rpms。这是一个两步过程。

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. 如果我创建的存储库比另一个更好?

1 个答案:

答案 0 :(得分:1)

尝试在不同的chroot中运行它。 E.g:

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与SHA)方面甚至存在差异。

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

总结一下 - 您应该使用重建的SRPM来保持安全。然而,最初的SRPM通常也会起作用。