当前测试麒麟V10、统信UOS20
dpkg命令适合二进制打包,简单讲就是将已经编译好的程序,封装为deb包,方便用户直接双击安装;而安装过程可以简单理解:将包内文件解压到‘/’根目录相对应的文件目录中。(有复杂需求的需要通过pre或post的inst/rm脚本操作!)
如下图将名为’dir’的目录打成deb包后,双击deb安装后的路径结果
注:dpkg像yum一样,系统仅允许存在一个dpkg进程,如果你打包的文件中含有deb包,你的postinst不可再做dpkg动作(可理解为:dpkg执行中,不允许再次出现子进程的dpkg动作)
一,标准deb包框架
deb包内目录有两大项:配置项和解压项
1)配置项,DEBIAN目录(必须大写)
此目录内放置deb信息文件(必须有),其它deb解压前、后、删除前、后执行操作,根据需求增加,且文件权限需644~755之间。
- control文件:描述性文件:软件包的名称、版本、描述等,必须文件。
- preinst文件:解包前运行的脚本。
- postinst文件:解包完成并将目录文件拷贝到系统后,运行的脚本。
- prerm文件:软件卸载前需要执行的脚本。
- postrm文件:软件卸载后需要执行的脚本。
2)解压项:除‘DEBIAN’以外的目录
解压项目录,会在安装中,将以‘/’根目录为基础,进行解压,且解压后的程序目录权限为777。
两个常用目录
- /usr/share/applications,此目录为开始菜单图标目录
- /opt/apps,此目录为程序解压目录
因此,若打一个最简单的空包,就是仅创建DEBIAN目录,并在其内添加control文件即可。
二,国产化打包规范
1)程序名称:以‘-’号分隔,如程序名称nuesoft-ebill
2)deb包名称:以‘_’分隔,程序名称_版本号_平台.deb,如deb包名称ffing-cn_0.0.1_amd64.deb
3)程序,需解压到/opt/apps/你的程序名目录
4)开始菜单图标,需放在/usr/share/applications/你的程序名.desktop
三,常用命令
语法:dpkg [参数] 目录名或包名
参数 | 说明 |
-b | 打包 |
-x | 解包,仅解压“解压项” |
-e | 解包,仅解压“配置项”,执行后解压出DEBIAN目录,查看配置内容 |
-i | 安装软件包 |
–purge | 删除软件包及配置文件(用于软件卸载后,依然存有配置信息 |
-r | 仅删除软件包(此命令会导致 -l参数误判,建议使用–purge) |
-l(小写) | 显示已安装的软件包 |
-L(大写) | 显示软件包关联文件(也可理解为安装路径) |
dpkg –b test/
解析:将test目录打包,将自动生成同名deb,执行结果生成test.deb
dpkg -b test/ neusoft-ebill_0.0.1_amd64.deb
解析:将test目录打包,指定包名为ffing-cn_0.0.1_amd64.deb,执行结果生成ffing-cn_0.0.1_amd64.deb
四,文件范本
desktop文件
用于开始菜单图标文件(桌面图标由postinst脚本将desktop文件复制到桌面)
[Desktop Entry]
Version=
Name=
Name[zh_CN]=
Comment=
Icon=
Exec=
Categories=
Terminal=
Type=
control文件
包名、版本、描述等信息,用于在deb安装器时拉取信息
Package:
Version:
Architecture:
Maintainer:
Description:
postinst文件
deb安装解压后,执行的脚本(添加桌面图标、添加开机启动、系统变量等),若postinst有向系统创建文件操作时,必须有postrm文件进行文件删除,否则二次安装deb会报错!!!
postrm文件
deb包卸载后执行脚本(主要是删除postinst创建的文件,也可以删除其他文件)
发表评论