如何使用 `pbuilder` 构建源包以便上传 PPA?

如何使用 `pbuilder` 构建源包以便上传 PPA?

我正在尝试使用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 依赖关系。

为了解决您的问题以便构建您的内容,您必须手动使用pbuilderpdebuilder登录 chroot。然后,您必须手动安装dh-autoreconf到 chroot 中,通常是在apt-get install dh-autoreconf您登录 chroot 之后。

完成这些并保存 chroot 的状态后,您就应该能够pbuilderpdebuilder您的包了。

(但是,我更喜欢以传统方式使用软件包,而且我不在乎我的构建系统是否完全干净,我真正构建的都是源包,而 debhelper 插件不会使我的系统变得那么混乱)

答案2

pbuilder用于从源包构建二进制包。PPA 也从源包构建二进制包。只需创建该文件时也创建的文件dput即可。source.changes<package>_<version>.dsc

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

相关内容