我所找到的信息是这样的。首先,有
这个简短的描述,这是我在这里最常问的问题。
构建系统的核心是
dpkg-buildpackages
,它使用
fakeroot
,而
fakeroot
又运行
debian/rules
(一个makefile)来构建软件包。如果你只是要为你正在运行的版本构建一个内部使用的软件包,那可能就足够了。
然而,如果你想为
debian
/
ubuntu
做贡献,你至少需要使用
debuild
,它会运行
lintian
并签署文件。
如果你想针对不同的
debian
/
ubuntu
版本进行构建,你需要使用
pbuilder
,它可以在一个干净的环境中构建软件包,不会受到已安装软件包的影响,以查看实际的依赖关系。你可以考虑使用
pbuilder-dist
来进一步简化操作。
有一种叫做“pdebuild”的东西,据说是“pbuilder构建的方式”。我没有看到它运行“lintian”,但这可能与“pbuilder”不一致。
然后还有一个叫做“cowbuilder”的东西,如果你想加快软件包的构建速度(在“pbuilder”上的封装?)。还有一些从“git”存储库构建的工具,我还没有深入研究。
更新。在#debian-mentors
频道上告诉我,“sbuild
的行为与buildd
相同,没有太多意外”,“pbuilder
对实验性支持完全错误”,“另一方面,sbuild
仍然缺少一些去除构建过程网络依赖的功能”,并且pbuilder
没有维护。去除网络依赖是必要的,因为构建软件包不应该依赖于网络的存在,它们不应该下载任何内容。
schroot
from experimental 据说能够隔离(解除共享)网络。
pbuilder
上看到的,cowbuilder
似乎是最容易使用的工具。我已经在这个回答中总结了这些步骤:https://askubuntu.com/questions/548815/cannot-build-on-launchpad/716481#716481 。顺便说一下,你不需要直接处理任何chroot
工具。sbuild / pbuilder会负责这方面的工作。 - user.dz