众所周知 .deb
是 Debian 发行版所采用的软件包格式。可以将二进制,脚本,图片或各种文件打包成一个类似压缩包形式(ar 归档格式),然后通过 apt install [包]
去安装(解压)文件到各个目录下。
一般可以使用 ar x [deb包]
或使用 dpkg-deb -X [deb包] [解压目录]
命令提取里面的文件。
打包好的 .deb 包解压后会是这样子:
├── control.tar.xz
├── data.tar.xz
└── debian-binary
其中 control.tar.xz
通过解压后里面的含有 deb 包的配置文件。而 data.tar.xz
里面是 deb 包的主体安装文件。debian-binary
里面通常会有一行 2.0,表示该软件包遵循 Debian 包格式版本 2.0 。
以一个简单例子开始,首先新建一个目录,然后创建以下结构。
├── DEBIAN
│ ├── control
│ ├── preinst
│ ├── postinst
│ ├── prerm
│ └── postrm
├── usr
│ ├── bin
│ └── test
└── etc
└── test.conf
其中 DEBIAN/control
是必须的,而 usr
与 etc
是可选的,为主体安装文件,也可以是其他目录和路径。但它们最终会解压在 /
下面。
control
文件为 deb 的主要配置,一般格式为:
Package: [包名]
Version: [版本号,如:1.82.1]
Section: [包的类型,如:utils/devel/libs/doc 等]
Priority: optional
Architecture: [描述架构,如: amd64/arm64/all 等]
Depends: [列出包的依赖]
如:libgtk2.0-0 (>= 2.10.0), libc6 (>= 2.3.6)
Maintainer: [维护者]
Description: [包的描述]
其中 Priority 选项有:
required
:这是最高的优先级,用于基本的系统,没有这些包,系统将无法正常运行。
important
:这些包是系统的重要部分,但系统可以在没有它们的情况下启动。
standard
:这是默认的优先级,适用于大多数常规的软件包。
optional
:这些包可能是某些用户想要的,但不是每个人都需要的。
extra
:这些包通常是非必要的,或者是用于特定目的的。
在 DEBIAN 下可存放着几种脚本,它们会在特定时机用来执行一些操作(都是非必须的,但是推荐使用)。
DEBIAN/preinst
:通常在解压之前执行
DEBIAN/postinst
:通常解压完成之后执行
DEBIAN/prerm
: 通常卸载包之前执行
DEBIAN/postrm
:通常卸载包之后执行
确认无误后,我们使用 dpkg-deb --build [包文件目录]
命令就可以打包出一个 [包名].deb
文件了。
使用 sudo apt install [deb路径]
即可安装,将那些文件解压至 /
下。
安装主体文件会覆盖对应位置下的同名文件。并且也会因为卸载某个包而删除同路径下的同名文件。请务必做好钩子脚本的安装前与卸载前检查,深思熟虑后再进行某些操作。