deb 格式
基础结构
deb 包本质上是一个 ar 归档文件,包含编译好的二进制文件、配置文件和元数据。
有两个关键组成
- DEBIAN 目录:包含版本信息和控制文件
- 文件系统布局:和系统目录对应结构的文件,部署后会放置到系统上对应的目录里(比如 /usr/bin,/etc 等)
常见的目录结构
myapp_1.0.0_amd64/
├── DEBIAN/ # **必须全大写!**
│ ├── control # 元数据文件(核心)
│ └── postinst # 安装后脚本(可选但推荐)
├── usr/
│ └── bin/
│ └── myapp # 你的 Go 二进制
└── etc/
└── myapp/
└── config.yaml # 配置文件(示例)
DEBIAN 目录
control 文件
这个文件存储了最关键的包信息,包名、版本、依赖都是存在这个文件里的。
Package: myapp
Version: 1.0.0
Section: utils
Priority: optional
Architecture: amd64
Depends: libc6 (>= 2.28), systemd (>= 240)
Maintainer: Your Name <you@example.com>
Description: My awesome Go service
A production-ready service for doing important things.
Homepage: https://github.com/yourname/myapp
维护脚本
DEBIAN 目录下还可以放置一系列维护脚本,分别在安装前、后,卸载前、后执行。比如安装后要进行配置。或者卸载完后需要删除数据。
这些脚本必须是可执行的,以 #/bin/sh 开头。
分别支持这些脚本
preinst: 在解压包文件之前执行。postinst: 在解压包文件之后执行。最常用,常用于配置初始化、启动服务。prerm: 在移除包文件之前执行。postrm: 在移除包文件之后执行。常用于清理文件、停止服务。
dh_make
debian 官方提供的 dh_make 工具来方便用户构建 deb 包。它提供了大部分的文件模板,只需要简单配置即可快速构建一个合适的 deb 包。
Read other posts