为什么 src rpms 不同
Why do src rpms differ
我一直在使用 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
结果是他们不一样。
所以我的问题是:
- 为什么
mock rebuild
生成源 rpm?显然我不需要一个,因为我提供了源 rpm 作为重建的输入。
- 为什么不同?
- 如果我正在创建一个存储库,哪个更好?
尝试在不同的 chroot 中 运行 它。例如:
mock -r fedora-23-x86_64 foo-1.0.16-1.fc22.src.rpm
你会注意到它会创建(在二进制包旁边)foo-1.0.16-1.fc23.src.rpm
。查看disttag中的差异。
生成的 SRPM 是在 chroot 内部使用来自该 chroot 的 rpmbuild
命令构建的。这可能会或可能不会导致差异(在 src.rpm 上尝试 rpm -qpi
)。在 Fedora 22 和 23 之间可能没有区别,但 'Build Date'(因此它们总是二进制不同)。但是 Epel-5 和 Fedora-23 在使用的校验和(MD5 vs. SHA)上甚至会有差异。
如果您使用 Mock's sign plugin 则生成的 SRPM 甚至可以签名。
总而言之 - 您应该使用重建的 SRPM 以确保安全。然而,原始的 SRPM 通常也能正常工作。
我一直在使用 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
结果是他们不一样。
所以我的问题是:
- 为什么
mock rebuild
生成源 rpm?显然我不需要一个,因为我提供了源 rpm 作为重建的输入。 - 为什么不同?
- 如果我正在创建一个存储库,哪个更好?
尝试在不同的 chroot 中 运行 它。例如:
mock -r fedora-23-x86_64 foo-1.0.16-1.fc22.src.rpm
你会注意到它会创建(在二进制包旁边)foo-1.0.16-1.fc23.src.rpm
。查看disttag中的差异。
生成的 SRPM 是在 chroot 内部使用来自该 chroot 的 rpmbuild
命令构建的。这可能会或可能不会导致差异(在 src.rpm 上尝试 rpm -qpi
)。在 Fedora 22 和 23 之间可能没有区别,但 'Build Date'(因此它们总是二进制不同)。但是 Epel-5 和 Fedora-23 在使用的校验和(MD5 vs. SHA)上甚至会有差异。
如果您使用 Mock's sign plugin 则生成的 SRPM 甚至可以签名。
总而言之 - 您应该使用重建的 SRPM 以确保安全。然而,原始的 SRPM 通常也能正常工作。