可重复地构建 .deb 包

可重复地构建 .deb 包

这来自如何在 debian 软件包中应用补丁?。现在构建软件包后,我不知道软件包是否正确构建。我确实在父目录中看到了这个 -

 ┌─[shirish@debian] - [~/games] - [5870]
└─[$] cat dpkg_1.18.15+nmu1_amd64.changes

Format: 1.8
Date: Mon, 21 Nov 2016 01:04:02 +0530
Source: dpkg
Binary: dpkg libdpkg-dev dpkg-dev libdpkg-perl dselect
Architecture: source amd64 all
Version: 1.18.15+nmu1
Distribution: UNRELEASED
Urgency: medium
Maintainer: Dpkg Developers <[email protected]>
Changed-By: shirish <shirish@debian>
Description:
 dpkg       - Debian package management system
 dpkg-dev   - Debian package development tools
 dselect    - Debian package management front-end
 libdpkg-dev - Debian package management static library
 libdpkg-perl - Dpkg perl modules
Changes:
 dpkg (1.18.15+nmu1) UNRELEASED; urgency=medium
 .
   * Non-maintainer upload.
   * Apply d-m-h fix from #844701
Checksums-Sha1:
 8e50f097f70d621071e1e22384c1d68da7693929 1169 dpkg_1.18.15+nmu1.dsc
 16aa8483b0ce8d9eb1f0daebca6da84578226966 4617028 dpkg_1.18.15+nmu1.tar.xz
 3f3eae9de5bb31e178a4acb32654e68410902bda 1238392 dpkg-dbgsym_1.18.15+nmu1_amd64.deb
 3877d627c7c70bd98f16ee0b71d80c69667a6885 1581332 dpkg-dev_1.18.15+nmu1_all.deb
 b678906567a0c8ba089a5eb109855eba608f60e7 2067816 dpkg_1.18.15+nmu1_amd64.deb
 6130872887cd4eeba0b0cc0d0c7354322709dfe7 280736 dselect-dbgsym_1.18.15+nmu1_amd64.deb
 58eb460ab48e1c802ee7ae439dc0295424ef7742 1270868 dselect_1.18.15+nmu1_amd64.deb
 41e17c39ced6f55b9e72d042255a7a9b647b2e8e 1040980 libdpkg-dev_1.18.15+nmu1_amd64.deb
 a38005cde488603a7ee5de9ce7bc307c79277bb9 1242182 libdpkg-perl_1.18.15+nmu1_all.deb
Checksums-Sha256:
 2c8cf8ab1256814aa7115009a4620da913b27935351872335cd429ae4e7a9c70 1169 dpkg_1.18.15+nmu1.dsc
 47390a1ca4a296852ef3c25c0bdc82217e49738438882a980e8da28dca0d809e 4617028 dpkg_1.18.15+nmu1.tar.xz
 4a47a968b5dd4b1e87c99e5de9e3fd31b610ebb1891989de3a72ef08afb3405b 1238392 dpkg-dbgsym_1.18.15+nmu1_amd64.deb
 a05ae6dcefd5bc9affe355c8dd4106b42f795678fa4de31bc063a9784fc845ab 1581332 dpkg-dev_1.18.15+nmu1_all.deb
 b9682da9975541f385b47cf1148028deea4a48a51156293589b124c6f706d7b7 2067816 dpkg_1.18.15+nmu1_amd64.deb
 d75479bb9005788d96e839ae8b2dde56701993ac6421df1f5aaf79634f008a48 280736 dselect-dbgsym_1.18.15+nmu1_amd64.deb
 8b317f45808d408485c566b9748522d63d556bcec7525dcaa442a9720073dd27 1270868 dselect_1.18.15+nmu1_amd64.deb
 e45e67c3ab034ed3d1bf9f268daba92ee3cc406c3b75ef2bd0354ec79dc30d7f 1040980 libdpkg-dev_1.18.15+nmu1_amd64.deb
 d75ff545c612a7eb5f4563bb3619cd33ea4d4baff6cade9452e94bb1e7b7a412 1242182 libdpkg-perl_1.18.15+nmu1_all.deb
Files:
 faab0ae6b71c8216a634cbef6759d122 1169 admin required dpkg_1.18.15+nmu1.dsc
 69eeaa680e11f291860217a9536e93dc 4617028 admin required dpkg_1.18.15+nmu1.tar.xz
 91961eae15e20a3bf2ad614cf42ee4ab 1238392 debug extra dpkg-dbgsym_1.18.15+nmu1_amd64.deb
 aa361b4cde6020393c75a601c51f54e6 1581332 utils optional dpkg-dev_1.18.15+nmu1_all.deb
 325a9629e03781c027f884a17ada0550 2067816 admin required dpkg_1.18.15+nmu1_amd64.deb
 75dbcd90ada67522d79206b65519865e 280736 debug extra dselect-dbgsym_1.18.15+nmu1_amd64.deb
 e490b38b2b132c26670635628e302941 1270868 admin optional dselect_1.18.15+nmu1_amd64.deb
 0d206c14b1ffd5cb6b09608e9774b3bf 1040980 libdevel optional libdpkg-dev_1.18.15+nmu1_amd64.deb
 e22e289a709d36d2186da60e07b68225 1242182 perl optional libdpkg-perl_1.18.15+nmu1_all.deb

我还在同一目录中看到了一个构建树,并且从时间戳来看,构建树必须仅在最后一步中生成。

$dpkg-buildpackage -us -uc

现在提供的校验和应该是规范的(含义相同)。至少据我所知,这是可重复的构建。。我希望我和维护者应该能够检查构建的包的完整性。我查看了 dpkg-buildpackage 的联机帮助页并尝试搜索“reproducible”关键字,但没有在那里找到它。

答案1

维护者只是要求您检查提供的补丁是否修复了问题。如果dpkg补丁允许您安装时libconfig-model-perl没有出现之前遇到的错误,则表明该补丁修复了问题。如果没有,该补丁还包括更详细的输出,这应该有助于查明真正的问题。这就是所需要的一切 - 无需担心可重复的构建。

由于您有一个.changes文件,因此您的构建已成功完成;由于dpkg包含广泛的测试套件,您可以确信它构建正确。

无论如何,当前可重复地构建一个包需要修改后的工具链,并且可重现的构建回答了一个非常具体的问题:“给定一个完全相同的构建环境,我可以构建一个与某些参考相同的包吗?”。维护者和您不太可能拥有相同的构建环境。

文件中的校验和.changes在可重现的意义上并不规范。他们出现的原因有两个:

  • 验证上传到存档的包是否正确上传;
  • 验证上传到存档的包是否与上传者签名的包匹配(这是 Debian 包“完整性链”的一部分)。

陆续重建相同来源目前预计会产生不同的校验和。

相关内容