如何为工作程序创建PPA?


36

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

  • 编程语言重要吗?(可以是bash脚本吗?)
  • 我需要添加任何内容吗?
  • 构建应该将其自身安装到哪里?
  • 如何定义依赖关系?
  • 如何使用依赖关系?
  • 如何创建.deb?
  • 上传到Launchpad之前需要做什么?

1
我之所以问这个问题,是因为我偶尔建议FLOSS项目创建一个PPA(这样我就可以轻松安装它们了:)-我希望能够将它们指向一个详尽的资源,或者自己动手做。
david.libremone 2011年

Answers:


33

这是一个非常广泛的问题。我将尽力回答,但绝对不会是循序渐进的说明。这是因为没有用于创建包的分步算法。您执行此操作的方式取决于许多因素,主要取决于软件包的类型(应用程序,库),源代码的结构以及许多细节。

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

我会尽力帮助您了解整个过程,以便您对它有所了解。《包装指南》提供了其他帮助的资源。


首先,您应该意识到,创建包(.deb文件)是与创建PPA分开的过程。创建PPA只需转到启动板的个人资料,然后单击“创建新的PPA”链接。就这样。它已创建,可以运行,但是为空。要上传软件包,您必须先创建一个。但是,让我先回答您的一些小问题。

  • 该编程语言DOES NOT都无所谓。它可以是C ++应用程序,Bash脚本,Brainfuck Hello World,单个README文件或一组漂亮的照片。软件包可以包含任何文件。在安装过程中,软件包将解压缩到文件系统的根目录(“ /”)。这样,他们可以将一些文件放在binaries文件夹中,向GNOME默认集中添加一些墙纸,或为用户提供Bash脚本。
  • 确实需要在源中添加一些内容。它必须是名为“ debian”的顶级目录。将会有一些包含软件包详细信息的文件-它们将用于定义软件包的类型,等等。
  • 依赖性在此文件之一中列出(以及其他详细信息)。从哪里得到它们?它们只是您的应用程序使用的其他软件包。应用程序的开发人员将知道他的程序需要哪些库和资源,因此列出它们不会有太多麻烦。
    • 某些用于构建程序包的工具(pbuilder)可以自动确定相关性,方法可能是确定应用程序在编译过程中需要什么。
  • 它还强烈建议使用自动工具。您可能还需要添加其他内容,但是可能几乎每个软件都已经在使用它们。AutoTools是一组非常有用的程序-automake,autoconf和autoscan等。当您使用著名的./configure && make && make install编译并安装程序时 然后使用自动工具自动处理源代码,准备源代码中包含的其他资源以进行安装,并将编译结果提取到适当的位置(以回答您的问题:构建将提取到许多单独的位置。二进制文件将转至/ 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来测试一切是否正常(它将使用上述所有这些文件,并通过在AutoTools的帮助下自动生成源文件,尝试将它们组合成.deb包-这就是它们对于打包至关重要的原因[坦率地说-不需要-您可以在没有它们的情况下或采用其他替代方法来相处,但这是最简单的方法,而其他方法可能需要一些高级设置,因为您需要指导构建者如何构建源代码(使用./debian/rules文件) )-但这不适合初学者])-如果您只想获取.deb软件包,就可以了。

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

  1. 使用dput将这些文件上传到启动板
  2. Launchpad将在计算机上运行pbuilder ,并在干净的环境中生成软件包
  3. 最后,程序包应出现在PPA中。

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

祝您创建软件包好运,希望您对我的回答有所帮助:)

您的朋友拉斐尔·西拉克(RafałCieślak)


如何创建在您自己的基础架构上托管的非Launchpad PPA?它只是具有适当目录结构的简单Web服务器吗?
莫里亚蒂教授

Brainf * ck的例子真的必要吗?
卡姆登

5
  • 在上传软件包之前,您需要对其进行设置以进行.deb打包,请参见Ubuntu PackagingGuide

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.