Skip to content

Debian 平台软件包构建完全指南

postrm 脚本的清理逻辑与 purge 陷阱示意图

从维护者脚本到实战打包 —— 一篇读懂 Debian 软件包构建的完整知识体系。

为什么会有这个专题?

在维护和交付自研服务时,将应用打包为标准的 .deb 包是最规范、最易维护的交付方式。然而,关于 Debian 打包的中文资料要么过于碎片化,要么停留在"能跑就行"的层面,缺乏对维护者脚本生命周期的系统讲解。

本专题正是为了解决这个问题而生。

专题内容概览

本专题共 六篇正文 + 一篇导读,循序渐进地构建起 Debian 打包的完整知识体系:

章节标题核心内容
导读本文专题概述与阅读指引
序章Debian 打包入门control、rules、changelog 三驾马车
第一章postinst 脚本完整解读安装后脚本的运行机制与最佳实践
第二章prerm 脚本的正确使用姿势卸载前脚本的场景化详解
第三章postrm 脚本的清理逻辑remove vs purge 的边界与陷阱
第四章Golang 项目打包实战多阶段 Docker 构建 + systemd 集成
第五章VUE 项目打包实战静态资源部署 + Nginx 自动配置

谁适合阅读这个专题?

✅ 适合你,如果你:

  • 需要将自己的应用(Go/Python/Node/VUE 等)打包为 .deb 包交付
  • 希望理解 postinstprermpostrm 的生命周期和触发场景
  • 想了解生产级的打包方案,包含 systemd 集成、配置保留、数据清理等
  • 正在搭建 CI/CD 流水线,需要标准化构建和交付流程

⚠️ 不适合你,如果你:

  • 只想用 fpmcheckinstall 打个"能用的包",不关心生命周期规范
  • 对 Debian 打包没有任何兴趣(那你怎么看到这里的?😄)

阅读路线图

路线一:系统学习(推荐新手)

按顺序从序章读到第五章,建立完整的知识体系。

路线二:按需跳读(适合有经验的开发者)

你的需求推荐阅读
想了解维护者脚本的生命周期第一章 → 第二章 → 第三章
想把 Go 项目打包为 .deb序章 → 第四章
想把 VUE 项目打包为 .deb序章 → 第五章
遇到 deconfigure 场景第二章(重点看 deconfigure 部分)
遇到 purge 清理问题第三章(重点看 purge 部分)

专题的核心理念

1. 理解生命周期,而非背诵脚本

postinstprermpostrm 不是孤立存在的,它们共同构成了软件包的完整生命周期。理解每个脚本在什么时机触发,比记住脚本模板更重要。

2. 配置保留是最高优先级

永远不要在升级时覆盖用户修改过的配置文件。 这是 Debian 打包的"第一原则"。本专题中的所有脚本都遵循这一原则。

3. 构建环境可复现

使用 Docker 多阶段构建,确保任何人在任何机器上都能构建出完全一致的 .deb 包。

实战项目概览

本专题包含两个完整的实战案例:

项目类型技术栈打包产物交付形式
后端服务Golang + systemd二进制文件.deb
前端应用VUE + Nginx静态资源 + Nginx 配置.deb

两个案例都包含:

  • ✅ 完整的 Docker 构建文件(builder.Dockerfile
  • ✅ 自动化构建脚本(Makefile
  • ✅ 生产级维护者脚本(postinstprermpostrm
  • ✅ 部署与验证指南

使用建议

1. 作为模板参考

本专题中的脚本和配置都经过了生产环境验证,可以作为你项目的打包模板直接复制使用。只需将 appname/apiserver/cms-manager 替换为你的项目名称即可。

2. 作为学习材料

如果你对 Debian 打包还很陌生,建议从序章开始,按顺序阅读。每章末尾都附有实践练习排坑指南,可以边读边练。

3. 作为问题排查手册

如果你在实际打包中遇到了问题(比如 postrm 失败导致包无法重新安装),可以直接跳转到对应章节查看问题分析和解决方案。

相关资源

官方文档

社区工具

工具用途适用场景
dh-make生成 Debian 打包模板新手入门
debhelper自动化构建工具集官方推荐方案
fpm简单快速的打包工具快速构建,不规范
checkinstall从源码安装生成 .deb个人使用

本专题采用 debhelper + dh + Docker 方案,兼顾规范性和可自动化。

快速开始

如果你想立即开始将 Golang 项目打包为 .deb,直接跳转到:

👉 第四章:Golang 项目打包为 Debian 包完整指南

如果你想立即开始将 VUE 项目打包为 .deb,直接跳转到:

👉 第五章:VUE 项目打包为 Debian 包与 Nginx 自动配置

如果你想从头学起,请从序章开始:

👉 序章:Debian 打包入门——debian/control、rules 与 changelog 详解

保持更新

本专题会根据 Debian 打包工具链的更新和读者的反馈持续修订。如果你有任何建议、疑问或发现了 Bug,可以联系我 🙌


祝你打包愉快! 🚀

最后更新2026/07/25 14:21
如果你觉得这篇文章有帮助,或者想聊聊技术、工作,欢迎通过下面方式联系我:
contact fishfinal