如何为工作程序创建PPA?

假设我有一个用C,C ++或Python编写的工作应用程序。 我想创建一个Launchpad PPA,以便其他人可以从包中轻松安装它。 请从头到尾逐步说明这一点。 (或提供相同的链接;)

  • 编程语言是否重要? (它可能是一个bash脚本吗?)
  • 我需要在构建中添加任何内容吗?
  • 构建应该在哪里安装?
  • 如何定义依赖项?
  • 我如何使用依赖项?
  • 如何创建.deb?
  • 在上传到Launchpad之前我需要做什么?

这是一个非常广泛的问题。 我会尽可能多地回答,但绝对不会是一步一步的指示。 这是因为没有用于创建包的逐步算法。 你要这样做的方式取决于很多因素,主要取决于包的类型(应用程序,库),源的结构和许多细节。

幸运的是, http: //packaging.ubuntu.com上有一个详尽的指南

我会尝试帮助你理解整个过程,所以当你对它更熟悉的时候。 包装指南包含额外帮助的资源。


首先,您应该意识到创建包(.deb文件)是一个与创建PPA不同的过程。 创建PPA需要转到Launchpad的配置文件并单击“创建新的PPA”链接。 就这样。 它是创建的,它可以工作,但它是空的。 要上传包,您必须先创建一个包。 但是,让我先回答一些你的小问题。

  • 编程语言根本不重要。 它可以是C ++应用程序,Bash脚本,Brainfuck Hello World,单个README文件或一组很酷的照片。 包可能包含任何文件。 在安装过程中,程序包将被解压缩到文件系统的根目录(“/”)。 这样他们就可以将一些文件放在二进制文件夹中,将一些壁纸添加到GNOME默认集中,或者为用户提供一个Bash脚本。
  • 您需要向源添加内容。 它必须是名为“debian”的顶级目录。 将有一些包含详细信息的文件 – 它们将用于定义包的类型等。
  • 其中一个文件中列出了依赖关系(以及其他详细信息)。 从哪里获取它们? 它们只是应用程序使用的其他包。 应用程序的开发人员将知道他的程序需要哪些库和资源,因此他列出它们不会有太多麻烦。
    • 用于构建包(pbuilder)的一些工具可以自动填充依赖项,可能通过确定应用程序在编译期间需要的内容。
  • 强烈建议使用AutoTools 。 这可能是您需要添加的其他内容,但可能几乎所有软件都已使用它们。 AutoTools是一组非常有用的程序 – automake,autoconf和autoscan等等。 当您使用着名的./configure && make && make install编译和安装程序时,autotools用于自动处理源,准备安装源所包含的其他资源,并将编译结果提取到适当的位置(回答你的问题:构建将提取到许多不同的地方。二进制文件将转到/ usr / local / bin,文档转到/ usr / local / share / docs等。此外,包中的二进制文件将转到甚至不同的地方,对于/ usr / bin的二进制文件。如何处理这个复杂的目录布局?使用AutoTools – 它会自动关心它,这就是它们如此有用的原因)。

构建.deb包可能看起来非常复杂,但并不困难。 我强烈推荐您使用官方Ubuntu指南来创建软件包: http : //packaging.ubuntu.com

这是巨大的,但你会发现你可以跳过该文本的大部分内容(取决于你要构建的包)。 基本上,包装过程由这些部分组成(所有内容都在“指南”中有明确说明)

  1. 初始化一些用于构建包的工具。
  2. 获取来源
  3. 创建./debian目录并使用所需数据填充它
  4. 使用debuild构建包[应该创建一组文件,包括* .dsc,* _source.build,* _source.changes,它们负责包的数据,以及如何处理它(你也会有)来源.tar.gz)]
  5. 通过在本地运行pbuilder来测试一切是否正常工作(它将采用上面提到的所有这些文件并尝试将它们组合成一个.deb包,通过在AutoTools的帮助下自动构建源代码 – 这就是它们对包装至关重要的原因[坦率地说 -没有 – 你可以在没有它们或有一些替代方案的情况下相处,但这是最简单的方法,而其他可能需要一些高级设置,因为你需要指示构建器如何构建源代码(使用./debian/rules文件) ) – 但这不适合初学者] ) – 如果你只是想获得一个.deb包,那就完成了。

现在,您必须将其上传到您的PPA,该帮助页面对此进行了解释: https : //help.launchpad.net/Packaging/PPA/Uploading

  1. 使用dput将这些文件上载到Launchpad
  2. Launchpad将在他们的计算机上运行pbuilder,并在干净的环境中生成包
  3. 最后,包应该出现在PPA中。

如您所见,创建PPA 并不是那么简单但是不要害怕 ,这也不是那么困难。 此外,我建议你不要鼓励开发人员使用PPA,因为他们可能不会听你的,因为他们需要做一些额外的工作(如果他们想要他们已经做过),你可能会想要尝试支持Ubuntu开发人员和整个社区,并为他们提供你准备好的软件包:)

祝你好好创造包,希望你能找到我的答案:)

你的朋友,RafałCieślak

  • 在上传软件包之前,您需要为.deb打包进行设置,请参阅Ubuntu PackagingGuide 。

  • 为软件构建软件包后,请参阅Launchpad的PPA文档 。 它将指导您从PPA创建到上传您的包。