如何使用`pbuilder`构建源代码包以进行PPA上传?

我正在尝试使用pbuilder上传到PPA。 使用以下命令构建包:

 sudo pbuilder build _.dsc 

但上传失败并出现错误:

 Source/binary (ie mixed) uploads are not allowed. 

据说我需要使用pdebuild来构建source package ,但是pdebuild不会解析构建依赖性。 我该如何构建这个包,以便最终上传? 我不想手动安装依赖项。

答案是你没有。 pbuilder获取源包并构建二进制文件。 它也可以在没有构建源包的情况下获取源代码,并创建您自己托管的二进制文件,或者添加到您自己的debian存储库系统中以自行托管。

这不是PPA所需要的。


您想要做的,以及我强烈建议的是,您遵循传统的打包程序,并在代码上运行debuild -S ,包含源代码, debian/文件夹以及其他所有内容的目录。 。

然后,在通过debuild -S构建源包debuild -S ,您可以通过debuild -S将创建的.changes文件在源目录上方的一个目录中上载到PPA。 (此步骤在Launchpad的PPA上传帮助文档中引用)。

理论上你可以使用pdebuilder来保持你的系统干净并在chroot内部构建,但请继续阅读我的声明,以及之前为什么它失败了。


根据评论,您已正确识别debhelper无法找到autoreconf插件。

正如我在对这个答案的评论中所说, pbuilderpdebuilder都不够聪明,无法确定debhelper的依赖关系。

要解决您的问题,以便您的东西可以构建,您将不得不手动使用pbuilderpdebuilder登录chroot。 然后,您必须手动将dh-autoreconf安装到chroot中,通常在登录chroot后使用apt-get install dh-autoreconf

一旦你完成了,并保存了chroot的状态,你应该能够pbuilderpdebuilder你的包。

(但是,我更喜欢传统上使用包,我不在乎我的构建系统是否完全干净,我真正构建的都是源包,并且debhelper插件不会让我的系统变得非常混乱)

pbuilder用于从源包构建二进制包。 PPA还从源包构建二进制包。 只需dput您在创建_.dsc文件时创建的source.changes文件。

使用pbuilder一个要点是在本地模仿干净的chroot环境,该环境用于在官方档案和PPA中构建二进制包。