作为最终用户,如何验证给定的包是否以可重现的方式构建?

作为最终用户,如何验证给定的包是否以可重现的方式构建?

我想验证一下是否mksh可以以可重现的方式构建该包。我正在尝试与

apt build-dep mksh
apt source mksh
cd mksh; dpkg-buildpackage -uc -us
cd ..; sha256sum <freshly build dep>

如果我现在这样做

apt download mksh

并将下载的 deb 的校验和与我本地创建的 debian 包进行比较,校验和不同(预计我没有签署 deb)

如何使这些校验和匹配?

答案1

mksh包可重复构建.deb,这意味着如果您可以重现其构建环境,则可以重新创建给定的包。该信息已存储.buildinfo文件中,并在Debian 快照,可以检索用于构建给定.deb.

现在,.buildinfo文件不会与 Debian 存储库中的二进制包一起发布, 但他们被出版了buildinfos.debian.net,其中包含当前 Debian 11.buildinfo版本的文件(mksh例如 版本amd64)。使用它,您可以确定给定二进制包的构建环境mksh是什么,然后尝试重现它。

这里还有另一个微妙之处——Debian mksh11 中的当前软件包是 binNMU,其源代码没有确切地与发布的包源匹配。要重现现有的二进制包,您必须包含额外的 binNMU changelog(例如 changelog.Debian.amd64.gzamd64包装中)具有相同的内容:

mksh (59c-9+b2) sid; urgency=low, binary-only=yes

  * Binary-only non-maintainer upload for amd64; no source changes.
  * Rebuild for outdated Built-Using

 -- amd64 / i386 Build Daemon (x86-ubc-01) <[email protected]>  Thu, 05 Aug 2021 11:52:19 +0000

请注意,如果您重现给定的构建环境,生成的.deb文件应该完全相同——在 Debian 中发布的二进制包本身没有签名,这是描述它们的元数据

答案2

你不能。底层数据不同,因此计算出的校验和也会不同。找到两个具有相同校验和的值是一个难题。

相关内容