deb包是Debian操作系统及其衍生版本(如Ubuntu)中使用的软件包分发和安装的标准格式。
组成
① 数据包,包含实际安装的程序数据,文件名为 data.tar.XXX。
② 安装信息及控制脚本包,包含 deb 的安装说明,标识,脚本等,文件名为 control.tar.XXX。
③ deb 文件的一些二进制数据,包括文件头等信息。
XXX代表压缩格式
数据包
就是我们需要安装到系统的可执行文件、动态库、配置文件、目录等,所见即所得。
安装信息
与安装相关的信息都放在DEBIAN目录下,与需要打包的目录同级别
① control文件,用于记录软件包名称,[版本号],平台,依赖信息等数据,必选。
- Package:包名称,使用dpkg 命令查询时就是以这个为准的;
- Version:版本;
- Architecture:目标架构,不匹配会安装失败;
- Maintainer:维护人和邮箱;
- Description:包的简要说明;
- Depends:本软件包依赖的其他软件包即要求的版本(如果借助 apt 命令安装 deb包的时候,就会先安装依赖,在安装本软件包)。
② preinst文件,安装前做一些初始化工作,如目录创建,文件创建,配置文件初始化、备份旧文件等,非必选。
③ postinst文件,安装后做的处理,如目录权限、属组修改、通过脚本启动后台服务等,非必选。
④ prerm文件,卸载前做的处理,通常会停止与包相关的守护程序,非必选。
⑤ postrm文件,卸载后做的处理,如还原preinst备份的文件等,非必选。
打包
执行:
dpkg-deb --build sensor\_1.0-1\_arm64
sensor_1.0-1_arm64_deb为包名,包名遵循规则:<软件名称>_<主版本号>-<修订版本号>_<硬件架构>.deb
注意:
1) 执行打包指令前先设置DEBIAN目录下的preinst,postinst,prerm,postrm文件权限为0555或0755,否则,打包报错。
chmod 755sensor\_1.0-1\_arm64/DEBIAN/{
preinst,postinst,prerm,postrm}
2) 打包时会以当前用户规定软件包的属组。
dpkg -c sensor\_1.0-1\_arm64.deb
安装
sudo dpkg -i sensor\_1.0-1\_arm64.deb
查询安装状态:dpkg -s sensor
查询安装文件:dpkg -L sensor
deb包安装后,文件会被放置于 /var/lib/dpkg/info/ 目录下,如sensor的脚本文件安装后存储于 /var/lib/dpkg/info/ 目录下,以 sensor.*字符开头的文件名就是sensor的相关配置脚本:
卸载
sudo dpkg -r sensor
仍能查询到软件包信息
sudo dpkg -P sensor
命令才完全卸载干净
特点
- 无需以命令设置文件的权限、[所有者]和[用户组],所见即所得。
- 脚本依照安装和卸载的先后[顺序执行],可以提供更多选择。比如备份还原操作,可以在 preinst 中[备份文件],而在 postrm 中还原文件。
- 遵循严格的依赖关系,安装时就提示。