Logo
Section 1 / 8

Debian 软件包快速入门

学习如何快速填充 Debian 目录并开始进行 Debian 软件包制作。

导入

Debian 软件包快速入门

学习如何快速填充 Debian 目录并开始进行 Debian 软件包制作。

如果我们创建多个 Debian 包,很快就会厌倦重复创建类似的文件。

要么我们会开始从旧项目复制 debian/* 文件,要么会寻找替代方案。其中一个替代方案是 dh_make,这是一个用于快速创建新 debian/ 目录的工具。

对于多种编程语言,也有专门的工具可以根据语言特定的包自动生成 `debian/` 目录,通常能提供比普通 `dh_make` 更多的元数据。

Course Image

使用 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
  • 使用 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
Terminal

/dev/null && chpasswd <.password.txt && usermod -aG sudo user && cp -r /usercode/* /home/user && chown user:user /home/user/ -R && su - user " mode="edit">

Debian 构建系统

从单一源码包构建多个二进制包