Debian 软件包快速入门
学习如何快速填充 Debian 目录并开始进行 Debian 软件包制作。
如果我们创建多个 Debian 包,很快就会厌倦重复创建类似的文件。
要么我们会开始从旧项目复制 debian/* 文件,要么会寻找替代方案。其中一个替代方案是 dh_make,这是一个用于快速创建新 debian/ 目录的工具。
对于多种编程语言,也有专门的工具可以根据语言特定的包自动生成 `debian/` 目录,通常能提供比普通 `dh_make` 更多的元数据。

使用 dh_make 启动 Debian 项目
dh_make 工具来自 dh-make 包,可以为我们生成 debian/ 目录,它会自动从当前目录名称中检测出包名和版本号。该工具假设我们是在一个名为 <package-name>-<version> 的目录中运行,并且如果没有传入 --native 选项,它还会假定存在一个 <package-name>-<version>.orig.tar.gz 文件。
让我们尝试一下:
运行 dh_make
1$ mkdir dh-make-example-0.1 2$ cd dh-make-example-0.1 3$ dh_make --native
它将输出如下内容:
运行 dh_make 的输出
1Type of package: (single, indep, library, python) 2[s/i/l/p]? 3Maintainer Name : root 4Email-Address : root@unknown 5Date : Sun, 30 Dec 2018 11:40:46 +0100 6Package Name : dh-make-example 7Version : 0.1 8License : gpl3 9Package Type : single 10Are the details correct? [Y/n/q] 11Currently there is not top level Makefile. This may require additional tuning 12Done. Please edit the files in the debian/ subdirectory now.
包类型可以通过 -C 选项在命令行中指定,否则 dh_make 会提示我们输入。
single表示构建一个仅依赖于特定架构的包。indep表示Architecture: all。library模式适用于 C 或 C++ 库,会为对象文件生成lib<yourpackage>包,为头文件生成lib<yourpackage>-dev包。
成功运行 dh_make 后,新生成的 debian/ 目录中包含 changelog、control、rules 和 copyright 文件,我们需要检查并根据需要进行修改。此外还有多个 .ex 示例文件,我们可以选择删除它们,或移除 .ex 扩展名后编辑以满足需求。同时,我们还应添加一个 compat 文件,写入所使用的 Debian 构建工具链的兼容版本。
针对特定编程语言的包创建工具
有许多工具可以为特定编程语言的包生成 debian/ 目录。
例如,dh-make-perl 可以从 Comprehensive Perl Archive Network (CPAN) 下载 Perl 包。CPAN 会自动将 Perl 层级的依赖关系转换为 Debian 包名,并将其添加到 debian/control 文件的 Depends 字段中。它还能根据 Perl 包中是否存在 C 或 XS 代码自动判断架构,通常能很好地完成元数据的组装。
Debian 官方维基列出了多种包生成工具。截至撰写本文时,已有支持 Perl、Python、Node.js、Go、Haskell、Ruby 和 EMACS Lisp 的工具。
注意: 与
fpm不同,这些工具通常会为我们生成debian/目录,我们可以在运行dpkg-buildpackage前对其进行精细调整。
实践练习
-
使用
dh-make创建一个 Debian 包:- 创建一个名为
<package-name>-<version>的目录并进入该目录:1$ mkdir dh-make-example-0.1 2$ cd dh-make-example-0.1 - 使用
dh_make创建 Debian 项目:1$ dh_make --native
- 创建一个名为
-
使用
dh-make-perl创建一个 Debian 包:- 使用
dh-make-perl获取并解压(例如)App::cpanminus分发包,用于创建 Debian 包:1$ dh-make-perl --cpan App::cpanminus
- 使用
-
构建 Debian 包:
- 在两种情况下,构建 Debian 包:
1$ dpkg-buildpackage -b -us -uc
- 在两种情况下,构建 Debian 包:
-
使用
dh-make创建 Debian 包:- 创建一个名为
<package-name>-<version>的目录并进入该目录:1$ mkdir dh-make-example-0.1 2$ cd dh-make-example-0.1 - 使用
dh_make创建 Debian 项目:1$ dh_make --native
- 创建一个名为
-
使用
dh-make-perl创建 Debian 包:- 使用
dh-make-perl获取并解压(例如)App::cpanminus分发包,用于创建 Debian 包:1$ dh-make-perl --cpan App::cpanminus
- 使用
-
构建 Debian 包:
- 在两种情况下,构建 Debian 包:
1$ dpkg-buildpackage -b -us -uc
- 在两种情况下,构建 Debian 包:
/dev/null && chpasswd <.password.txt && usermod -aG sudo user && cp -r /usercode/* /home/user && chown user:user /home/user/ -R && su - user " mode="edit">