![如何使用 `pbuilder` 构建源包以便上传 PPA?](https://linux22.com/image/1118513/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20%60pbuilder%60%20%E6%9E%84%E5%BB%BA%E6%BA%90%E5%8C%85%E4%BB%A5%E4%BE%BF%E4%B8%8A%E4%BC%A0%20PPA%EF%BC%9F.png)
我正在尝试使用pbuilder
上传到 PPA。使用以下命令可以成功构建软件包:
sudo pbuilder build <package>_<version>.dsc
但上传失败并出现错误:
Source/binary (i.e. mixed) uploads are not allowed.
提示我需要使用pdebuild
来构建source package
,但pdebuild
没有解决构建依赖关系。我该如何构建这个包,以便最终上传?我不想手动安装依赖项。
答案1
答案是不需要。 pbuilder
获取源码包并构建二进制文件。它还可以获取未构建源码包的源代码并创建二进制文件,您可以自行托管这些二进制文件,也可以将其添加到您自己的 Debian 存储库系统中自行托管。
这不是 PPA 所需要的。
您要做的,也是我强烈建议的,是遵循传统的打包程序,并运行debuild -S
代码,其中包含包的目录,其中包含源代码、debian/
文件夹和其他所有内容。
然后,在你通过 构建源码包之后debuild -S
,你就可以.changes
通过 上传源码目录上一级目录中创建的文件到 PPA 中dput
。(此步骤称为在 Launchpad 的 PPA 上传帮助文档中)。
理论上,您可以使用它pdebuilder
来保持系统清洁并在 chroot 内部构建,但请继续阅读我对此的陈述,以了解为什么它之前会失败。
根据评论,您正确地识别出 debhelper 无法找到该autoreconf
插件。
正如我在这个答案的评论中所说的那样,pbuilder
并且pdebuilder
都不够智能,无法确定 debhelper 依赖关系。
为了解决您的问题以便构建您的内容,您必须手动使用pbuilder
或pdebuilder
登录 chroot。然后,您必须手动安装dh-autoreconf
到 chroot 中,通常是在apt-get install dh-autoreconf
您登录 chroot 之后。
完成这些并保存 chroot 的状态后,您就应该能够pbuilder
或pdebuilder
您的包了。
(但是,我更喜欢以传统方式使用软件包,而且我不在乎我的构建系统是否完全干净,我真正构建的都是源包,而 debhelper 插件不会使我的系统变得那么混乱)
答案2
pbuilder
用于从源包构建二进制包。PPA 也从源包构建二进制包。只需创建该文件时也创建的文件dput
即可。source.changes
<package>_<version>.dsc
使用中的要点之一pbuilder
是本地模拟用于在官方档案和 PPA 中构建二进制包的干净 chroot 环境。