重建和修改 Debian 软件包

Rebuilding and Modifying Debian Packages

简介

Debian 软件包系统是管理 Debian 及其衍生发行版(如 Ubuntu)上的软件不可或缺的一部分。它方便了软件包的安装、升级和移除。然而,有时,可用的二进制软件包可能无法满足用户或组织的全部特定需求,这可能是因为需要修补版本、附加功能或为性能优化进行自定义。本文深入探讨了重建和修改现有 Debian 软件包的过程,为那些需要根据其精确需求定制软件包的人员提供了指南。

了解 Debian 软件包

Debian 软件包的文件扩展名为 .deb,是包含编译后的二进制文件、配置文件和安装脚本的归档文件。了解这些软件包的内部结构至关重要。典型的 .deb 软件包包括

  • DEBIAN 目录:包含控制文件,这些文件管理软件包的安装、升级或移除方式。
  • 数据归档:包含软件包的实际文件。
Debian 软件包中的常见文件
  • control:详细说明软件包的依赖项和元数据,如版本、维护者和描述。
  • changelog:记录对软件包所做的所有更改。
  • rules:指定如何从源代码构建软件包。
Debian 打包工具
  • dpkg:处理软件包安装和移除的基础工具。
  • APT (高级软件包工具):在更高级别上工作,处理从远程仓库检索和安装软件包。
  • dpkg-dev:构建 Debian 软件包所需工具的集合。

为什么要修改 Debian 软件包?

自定义软件可以优化运营效率、增强安全性,并添加或修改功能,以更好地适应其运行的独特环境。修改软件包的典型原因包括

  • 自定义:调整软件以适应特定的本地策略或性能要求。
  • 安全补丁:快速应用尚未成为官方版本一部分的安全补丁。
  • 功能更新:添加标准软件包中不提供的功能。

准备环境

安装必要的工具

在开始之前,请确保您的系统已安装 Debian 软件包开发所需的工具

sudo apt-get install dpkg-dev devscripts build-essential fakeroot

设置工作目录

建议在干净的目录中工作,以避免构建环境受到污染

mkdir ~/packaging cd ~/packaging

检索源代码包

要修改软件包,首先下载源代码

apt-get source package-name

此命令下载多个文件,包括 .dsc(描述文件)、原始 tarball (.tar.gz) 以及可能的 diff 文件 (.diff.gz),其中详细说明了 Debian 维护人员对原始源代码所做的更改。

修改软件包

解包源代码包

下载后,解包源代码

dpkg-source -x package-name_version.dsc

浏览 Debian 软件包源代码树

解包后的源代码目录通常将包含原始源代码和一个 debian 目录,其中包含所有打包脚本和控件。

编辑文件

可以直接修改源代码,也可以使用 quilt 等工具通过补丁进行修改。Debian 的补丁管理系统允许应用和有效跟踪多个补丁。

更新 Debian 软件包元数据

修改变更日志

更新变更日志文件至关重要

dch -i

此命令打开一个编辑器以添加新条目,有助于系统地跟踪软件包版本和更改。

调整控制文件和其他元数据

其他修改可能包括调整控制文件以更改依赖项或其他元数据,如优先级和部分。

重建软件包

要重建软件包,请使用

debuild -us -uc

此命令构建软件包及其更改,跳过签名过程。它处理依赖项解析,并确保软件包在您的系统上正确编译。

测试和部署

安装重建的软件包

通过安装新构建的软件包进行测试

sudo dpkg -i ../package-name_version_arch.deb

测试确保软件包正确安装并按预期运行。

维护软件包

维护自定义软件包包括及时了解上游更改并在必要时集成它们。定期更新源代码并重新调整您的更改可以防止冲突并保持软件安全。

结论

重建和修改 Debian 软件包是一项强大的技能,可以极大地提高基于 Debian 的环境中的软件管理的灵活性和安全性。通过掌握这项技能,用户和组织可以确保他们的软件系统得到完美定制,以满足其独特的需求。

George Whittaker 是 Linux Journal 的编辑,也是一位定期撰稿人。George 撰写技术文章已有二十年,并且是 Linux 用户超过 15 年。在业余时间,他喜欢编程、阅读和游戏。

加载 Disqus 评论