Debian(Ubuntu)系统Deb包打包说明
什么是Deb包
DEB是Debian软件包格式的文件扩展名,跟Debian的命名一样,DEB也是因Debra Murdock而得名,她是Debian创始人Ian Murdock的太太。
deb包在Linux操作系统中类似于windows中的软件包(exe),几乎不需要什么复杂的编译即可通过鼠标点击安装使用。
Ubuntu dpkg命令
dpkg 命令是Debian Linux系统用来安装、删除、构建和管理Debian的软件包的实用工具。
如已有deb安装包(例如:object.deb) dpkg命令常用格式如下:
用法: dpkg [<选项>...] <命令> sample.deb
命令列表:
-
-i | --install
安装软件包
-
-L |--listfiles
查看软件包安装的所有文件
-
-s | --status
查看软件包的详细信息
-
-r | --remove
卸载软件包
-
c | --contents
查看软件包的文件结构
-
-P | --print-avail
显示可用的版本信息详情
...
Deb包的文件结构
包括DEBIAN和软件具体安装目录(如 /etc,/usr,/opt,/tmp 等)
deb包本身由三部分组成
组成 | 详细 |
---|---|
数据包 | 包含实际安装的程序数据,文件名为"data.tar.XXX" |
安装信息及控制包 | 包含deb的安装说明,标识,脚本等,文件名为"control.tar.gz" |
二进制数据 | 包含文件头等信息,需要特殊软件才可以查看 |
DEBIAN 目录包含的文件
- conffiles
- contorl
- copyright
- changelog
- md5sums
- postinst(postinstallation)
- postrm(postremove)
- preinst(preinstallation)
- prerm(preremove)
下面逐一阐述。
conffiles
配置文件清单列表
control
该文件主要描述软件包的名称(Package),版本(Version),Installed-Size (大小),Maintainer (打包人和联系方式),以及描述等。
字段 | 说明 | 样例 |
---|---|---|
Package | 名称 | metrics-server,中间不能有空格 |
Version | 版本 | 1.1.0 必须数字开头 |
Description | 说明 | |
Vendor | 供应商 | changkong |
Maintainer | 软件包维护人员 | changkong changkong@163.com |
Section | 软件类别 | default,utils, net, mail, text, x11 |
Priority | 软件包对系统的重要程度 | required, standard, optional, extra等; |
Essential | 是否是系统最基本的软件包 | yes/no,若为yes,则不允许卸载(除非强制性卸载) |
Architecture | 软件所支持的平台架构 | i386, amd64, m68k, sparc, alpha, mips64le,arm64,powerpc等 |
Installed-Size | 软件包大小 | 118769 |
Depends | 软件所依赖的其他软件包和库文件 | 若依赖多个软件包和库文件,采用逗号隔开 |
Pre-Depends | 软件安装前必须安装、配置依赖性的软件包和库文件 | 常用于必须的预运行脚本需求 |
Recommends | 推荐安装的其他软件包和库文件 | |
Suggests | 建议安装的其他软件包和库文件 | |
License | 版权信息 | unknown |
Homepage | 网站信息 | https://www.csdn.net |
copyright
版权相关信息文件,非必须
changelog
版本变更记录文件 ,非必须
md5sums
所有文件清单的md5校验码信息,非必须
preinst
在Deb包文件解包之前(即软件安装前),将会运行该脚本。可以停止作用于待升级软件包的服务,直到软件包安装或升级完成
postinst
负责完成安装包时的配置工作。如新安装或升级的软件重启服务。软件安装完后,执行该Shell脚本,一般用来配置软件执行环境,必须以"#!/bin/sh"为首行。
例:
#!/bin/sh
if [ "$1" = "configure" ]; then
/Applications/MobileLog.app/MobileLog -install
/bin/launchctl load -wF /System/Library/LaunchDaemons/com.iXtension.MobileLogDaemon.plist
fi
prerm
该脚本负责停止与软件包相关联的daemon服务。它在删除软件包关联文件之前执行。
#!/bin/sh
if [[ $1 == remove ]]; then
/Applications/MobileLog.app/MobileLog -uninstall
/bin/launchctl unload -wF /System/Library/LaunchDaemons/com.iXtension.MobileLogDaemon.plist
fi
postrm
负责修改软件包链接或文件关联,或删除由它创建的文件。软件卸载后,执行该Shell脚本,一般作为清理收尾工作,必须以"#!/bin/sh"为首行。
#!/bin/sh
rm -rf /root/mydeb.log
Deb文件打包
按照上述文件组织打包的文件目录和打包配置文件,比如目录 ${FILE_DIR} 中
dpkg-deb -b ${FILE_DIR} ${FILE_NAME}.deb