假设我有一个用 C、C++ 或 Python 编写的可运行应用程序。我想创建一个 Launchpad PPA,以便其他人可以轻松地从包中安装它。请提供从头到尾执行此操作的分步说明。(或提供执行相同操作的链接 ;)
- 编程语言重要吗?(可以是 Bash 脚本吗?)
- 我需要在构建中添加任何东西吗?
- 构建应该安装到哪里?
- 我如何定义依赖关系?
- 如何使用依赖项?
- 我如何创建 .deb?
- 上传至 Launchpad 之前我需要做什么?
答案1
这是一个非常广泛的问题。我会尽力回答,但肯定惯于是分步说明。这是因为没有创建包的分步算法。创建包的方式取决于许多因素,主要是包的类型(应用程序、库)、源的结构以及许多细节。
幸运的是,这里有一份详尽的指南http://packaging.ubuntu.com
我会尽力帮助您理解整个过程,这样您就会更熟悉它。包装指南包含更多帮助资源。
首先,您应该意识到创建软件包(.deb 文件)与创建 PPA 是不同的过程。创建 PPA 只需转到 Launchpad 的配置文件并单击“创建新 PPA”链接即可。就是这样。它已创建,可以运行,但它是空的。要上传软件包,您必须先创建一个。但让我先回答您的一些小问题。
- 编程语言才不是完全不重要。它可以是一个 C++ 应用程序、Bash 脚本、Brainfuck Hello World、一个 README 文件或一组很酷的照片。包中可能包含任何文件。在安装过程中,软件包会被提取到文件系统的根目录(“/”)。这样,他们可以将一些文件放入二进制文件夹中,将一些壁纸添加到 GNOME 默认设置中,或者为用户提供 Bash 脚本。
- 你做需要向源添加一些内容。它必须是名为“debian”的顶级目录。将有一些包含软件包详细信息的文件 - 它们将用于定义软件包的类型等。
- 依赖项列在其中一个文件中(以及其他详细信息)。从哪里获取它们?它们只是应用程序使用的其他包。应用程序的开发人员将知道他的程序需要哪些库和资源,因此他不应该在列出它们方面遇到太多麻烦。
- 一些用于构建包(pbuilder)的工具可以自动填充依赖项,可能是通过确定您的应用程序在编译期间需要什么来自动填充依赖项。
- 也是高度建议使用自动工具。这是您可能需要添加的另一件事,但几乎每个软件都已经使用它们了。AutoTools 是一组非常有用的程序 - automake、autoconf 和 autoscan 等等。当您使用著名的./配置&& 制作&& 进行安装然后使用自动工具自动处理源代码,准备安装源代码中包含的其他资源,并将编译结果提取到适当的位置(回答您的问题:构建将提取到许多单独的地方。二进制文件将转到 /usr/local/bin,文档将转到 /usr/local/share/docs 等。此外,包中的二进制文件甚至会转到不同的地方,例如二进制文件将转到 /usr/bin。如何处理这种复杂的目录布局?使用 AutoTools - 它会自动处理它,这就是它们如此有用的原因)。
构建 .deb 包可能看起来是一个非常复杂的过程,但其实并没有那么难。我强烈推荐你使用 Ubuntu 官方的包创建指南:http://packaging.ubuntu.com
它非常庞大,但是您会发现您可能可以跳过该文本的大部分内容(取决于您要构建的包)。基本上,包装过程由以下部分组成(指南中均有明确说明):
- 初始化一些用于构建包的工具。
- 获取源代码
- 创建 ./debian 目录并填充所需数据
- 使用 debuild 构建软件包[这应该创建一组文件,包括 *.dsc、*_source.build、*_source.changes,它们负责有关包的数据以及如何处理它(您还将有一个源 .tar.gz)]
- 通过在本地运行 pbuilder 来测试一切是否正常(它将获取上面提到的所有文件并尝试将它们组合成一个 .deb 包,通过在 AutoTools 的帮助下自动构建源代码 - 这就是为什么它们对于打包至关重要[坦率地说 - 不是 - 你可以没有它们或者用一些替代方案,但这是最简单的方法,其他方法可能需要一些高级设置,因为你需要指导构建者如何构建源代码(使用 ./debian/rules 文件) - 但这不适合初学者]) — 如果您只是想获取一个.deb 包,那就完成了。
现在你必须上传将其添加到您的 PPA,此帮助页面上对此进行了解释:https://help.launchpad.net/Packaging/PPA/Uploading
- 使用 dput 将这些文件上传到 Launchpad
- Launchpad 将在以下位置运行 pbuilder他们的计算机,并在干净的环境中生成包
- 最后,这些软件包应该出现在 PPA 中。
正如你所见,创建 PPA 是没那么简单。但不要害怕,这也不是那么难。此外,我建议你不要鼓励开发人员使用 PPA,因为他们可能不会听你的,因为他们需要做一些额外的工作(如果他们愿意,他们早就做了),但你可能想尝试支持 Ubuntu 开发人员和整个社区,并为他们提供你准备的软件包 :)
我希望你祝你好运创建包,希望你会发现我的回答有帮助:)
你的朋友 Rafał Cieślak