制作 deb 格式软件包
目录
deb 是 Debian 软件包格式,文件扩展名为 .deb
,在 Debian 和 Ubuntu 中广泛使用。将应用打包成 deb 软件包可以方便分发、安装和卸载,提供更好的用户体验。
deb 包安装时如果文件已存在,不会覆盖原文件。
Debian 软件包结构
deb 包中主要包括三部分:
debian-binary
二进制数据,包括格式版本号码等;control.tar.gz
元数据,包括对 deb 包的描述、脚本等;data.tar.*
实际安装的内容
其中,*
所指代的内容随压缩算法不同而不同。常见的可能值为 xz、gz、或 bz2。有时也会使用 lzma。
打包目录结构
在 Ubuntu 或者 Debian 系统中,创建一个打包目录,按照要求放入内容,使用 dpkg -i
命令打包。
一个打包目录的示例结构如下:
|
|
其中:
DEBIAN
目录存放 deb 包的描述和脚本等元数据,其内容最后会形成control.tar.gz
;- 其他目录为具体安装目录(相对于安装时根目录而言)。举例来说,该目录下的
lib/systemd/system/backend.service
文件在安装 deb 包时会被复制到系统/lib/systemd/system/
目录中,并保留原文件的权限和属组。
DEBIAN 目录介绍
下面介绍 DEBIAN 目录中各文件的作用。
control
control 文件用于描述 deb 包信息,举例如下:
|
|
对一些属性的说明:
Architecture
:硬件架构平台,可选值i386
、amd64
、m68k
、sparc
、alpha
和powerpc
等;Pre-Depends
:软件安装前必须安装、配置依赖性的软件包和库文件,它常常用于必须的预运行脚本需求;Depends
:软件所依赖的其他软件包和库文件。如果是依赖多个软件包和库文件,彼此之间采用逗号隔开;Priority
:申明软件对于系统的重要程度,如required
、standard
、optional
、extra
等;
注意
control 文件末尾要有一个空行。
脚本文件
在 DEBIAN 目录中有四个 shell 脚本文件,分别在包安装和卸载的不同时刻运行:
preinst
在 deb 包实际内容安装前运行;postinst
在 deb 包实际内容安装后运行;prerm
在 deb 包实际内容删除前运行;postrm
在 deb 包实际内容删除后运行;
比如安装一个安装后自动运行的软件包,可以在 preinst
中检查安装目录并清理旧文件,在 postinst
中启动服务,在 prerm
中停止服务,在 postrm
中清理日志文件。
其他文件
copyright
版权信息;changlog
修订记录;
打包命令
|
|
安装和卸载
|
|