如果你用过 Debian 或 Ubuntu,肯定对 .deb 软件包不陌生 —— 双击安装、dpkg -i 部署,简单又可靠。但你有没有想过:如何把自己的软件、定制的工具打包成 .deb?或者修复官方包的小 bug 后重新打包?
其实 Debian 打包并没有想象中复杂,掌握核心工具和规范后,新手也能在 1 小时内做出第一个可用的 deb 包。这篇文章就从基础概念到实际操作,再到社区贡献,带你完整走一遍 Debian 打包的全流程。
1. 先搞懂:Debian 包的 “两种身份”在动手前,得先分清两个核心概念,不然后续操控容易 confusion:
「二进制包」:用户最终安装的 “成品”我们平时用 dpkg -i 安装的 .deb 文件就是二进制包,比如 wget_1.21.3-1_amd64.deb。它本质是个 ar 压缩包,拆开能看到三个关键文件:
debian-binary:标记 deb 格式版本(通常是 2.0)control.tar.gz:包的 “身份证”—— 包含依赖、维护者、包描述等元数据data.tar.gz:实际的程序文件(比如 /usr/bin/wget、配置文件等)「源码包」:开发者维护的 “原材料”二进制包是从源码包构建来的。一个源码包能生成多个二进制包(比如 libtar 源码包会生成运行库 libtar0 和开发库 libtar-dev)。源码包主要包含三类文件:
xxx.orig.tar.gz:上游开发者提供的原始源代码(比如 GNU 官网下载的程序源码)xxx.debian.tar.gz:Debian 专属的定制内容(补丁、打包配置)xxx.dsc:源码包的 “说明书”—— 记录格式、校验和、构建依赖等简单说:源码包是 “菜谱”,二进制包是 “做好的菜”。大家打包的核心,就是写好 “菜谱”(设置源码包),再做出 “菜”(构建二进制包)。
2. 环境准备:3 步搭好打包工作台Debian 打包得特定工具链,而且只能在 Debian/Ubuntu 框架中执行(应该 root 权限),先把环境配好:
第一步:安装核心工具执行这条命令,一次性装完打包必备应用(后面会逐个解释用途):
bash
# 基础编译工具(gcc、make 等)+ Debian 打包核心工具
sudo apt install build-essential devscripts debhelper quilt lintian
build-essential:编译程序的 “基础套餐”,没它连 make 都用不了devscripts:打包者的 “瑞士军刀”,包含 debuild(一键构建)、dch(写版本日志)等debhelper:简化打包流程的 “助手”,98% 的 Debian 包都用它quilt:管理源码补丁的工具(改上游代码必备)lintian:检查包是否符合 Debian 规范的 “质检员”第二步:启用源码源(deb-src)打包时需要下载上游源码和构建依赖,必须启用 deb-src 源(默认可能关闭):
编辑源配置文件:sudo nano /etc/apt/sources.list在每个 deb 源下面,添加对应的 deb-src