原文链接: https://wiki.debian.org/Packaging/Intro
Debian 打包介绍
本文是一个关于如何制作 Debian 包的介绍性教程,它不会对 Debian 打包系统中的复杂概念深入介绍,但它介绍了能够为简单软件制作 Debian 包的方法。
出于这个目的,我们只使用来自于 debhelper 9
的 dh
命令。
需求
这个教程假设您已:
- 理解二进制包的安装过程;
- 了解命令行的使用,并且使用您偏爱的文本编辑器编辑文本文件;
技术要求:
- build-essential
- devscripts
- debhelper version 9 或更高版本
三个核心概念
三个最核心的概念为:
- 上游原始代码包(upstream tarball):
- 通常,人们为上游开发者(通常为第三方)编写的软件打包。
- 上游开发者会使用源代码归档软件或原始代码包的方式发放他们的软件。
- 原始代码包一般是上游制作的
.tar.gz
或.tgz
文件,它也可能被压缩成.tar.bz2
,.tb2
或.tar.xz
格式。原始代码包就是 Debian 构建包时使用的原材料。
- 源码包:
- 当您拥有了上游制作的原始代码包,下一步就可以制作 Debian 源码包了。
- 二进制包:
- 从源码包您可以构建 Debian 二进制包,它才是是实际上会被安装的包。
最简单的源码包由3个文件组成:
- 上游原始代码包,需要被重命名来符合一个特定的模式。
- 一个 debian 目录,带有所有上游源代码的更改记录,外加所有为 Debian 打包系统生成的所有文件。这种包拥有
.debian.tar.gz
的文件名。 - 一个描述文件(以
.dsc
结尾),罗列了其他两个文件。
听起来有些过于复杂,人们的第一印象是:所有东西都放在一个文件里会更简单。然而,保持上游代码包与 Debian 特定更改分离可以节省大量磁盘空间和带宽。对 Debian 来说,追踪必要的修改也更加简单。
打包工作流
打包工作流通常如下表所示:
- 重命名上游代码包
- 解压缩上游代码包
- 添加 Debian 打包文件
- 构建这个包
- 安装这个包
之后您就可以在您的电脑上测试它了。
源码包和二进制包都可以被上传到 Debian。
为了这个教程,我们使用这个代码包:hithere
第一步:更改上游代码包名称
Debian 打包系统假定上游代码包拥有一个十分特殊的名字,必须遵守一个特定的模式。它的名字由源代码包名、一个下划线、上游版本号组成,最后以.orig.tar.gz
组成。源代码包应当全部使用小写字母,并且包含字母、数字、符号,一些其他的字符也可以出现。
如果上游开发者使用了一个很好的 Debian 源代码包名,您可以直接使用。否则,请尽可能小的对名称进行改动以适应 Debian。在我们的情况下,上游开发者已经选取了一个很好的名字:“hithere”了,所以我们无需担心。我们应当最终使用 hithere_1.0.orig.tar.gz
作为上游代码包的名称。请注意,这里我们使用了一个下划线,而不是“-”,因为打包工具极其吹毛求疵。
$ mv hithere-1.0.tar.gz hithere_1.0.orig.tar.gz
第二步:解压缩上游代码包
通常情况下,源代码会进入一个以包名和上游版本号命名的目录中(使用连接符连接,而不是下划线),因此理想状况下我们使用的上游代码包会被解压缩到一个叫做hithere-1.0
的目录中。打包工具仍旧挑剔,因此我们必须这样做。
$ tar xf hithere_1.0.orig.tar.gz
第三步:添加 Debian 打包文件
以下所有文件都在源码树的 debian/