国产化Debian打包----dpkg命令

国产化Debian打包----dpkg命令

当前测试麒麟V10、统信UOS20

dpkg命令适合二进制打包,简单讲就是将已经编译好的程序,封装为deb包,方便用户直接双击安装;而安装过程可以简单理解:将包内文件解压到‘/’根目录相对应的文件目录中。(有复杂需求的需要通过pre或post的inst/rm脚本操作!)

如下图将名为’dir’的目录打成deb包后,双击deb安装后的路径结果

https://qnimg.ffing.cn/wp-content/uploads/2022/11/image.png?imageView2/0/q/75|watermark/1/image/aHR0cHM6Ly9xbmltZy5mZmluZy5jbi9mbl9sb2dvLnBuZw==/dissolve/55/gravity/SouthEast/dx/0/dy/0

注:dpkg像yum一样,系统仅允许存在一个dpkg进程,如果你打包的文件中含有deb包,你的postinst不可再做dpkg动作(可理解为:dpkg执行中,不允许再次出现子进程的dpkg动作)

一,标准deb包框架

https://qnimg.ffing.cn/wp-content/uploads/2022/11/image-1.png?imageView2/0/q/75|watermark/1/image/aHR0cHM6Ly9xbmltZy5mZmluZy5jbi9mbl9sb2dvLnBuZw==/dissolve/55/gravity/SouthEast/dx/0/dy/0

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文件复制到桌面)

https://qnimg.ffing.cn/wp-content/uploads/2022/11/image-2.png?imageView2/0/q/75|watermark/1/image/aHR0cHM6Ly9xbmltZy5mZmluZy5jbi9mbl9sb2dvLnBuZw==/dissolve/55/gravity/SouthEast/dx/0/dy/0
[Desktop Entry]
Version=
Name=
Name[zh_CN]=
Comment=
Icon=
Exec=
Categories= 
Terminal=
Type=

control文件

包名、版本、描述等信息,用于在deb安装器时拉取信息

https://qnimg.ffing.cn/wp-content/uploads/2022/11/image-3.png?imageView2/0/q/75|watermark/1/image/aHR0cHM6Ly9xbmltZy5mZmluZy5jbi9mbl9sb2dvLnBuZw==/dissolve/55/gravity/SouthEast/dx/0/dy/0
Package: 
Version:              
Architecture:  
Maintainer: 
Description: 

postinst文件

deb安装解压后,执行的脚本(添加桌面图标、添加开机启动、系统变量等),若postinst有向系统创建文件操作时,必须有postrm文件进行文件删除,否则二次安装deb会报错!!!

postrm文件

deb包卸载后执行脚本(主要是删除postinst创建的文件,也可以删除其他文件)

good good study, day day up!

发表评论

textsms
account_circle
email

国产化Debian打包----dpkg命令
当前测试麒麟V10、统信UOS20 dpkg命令适合二进制打包,简单讲就是将已经编译好的程序,封装为deb包,方便用户直接双击安装;而安装过程可以简单理解:将包内文件解压到‘/’根目录相对应…
扫描二维码继续阅读
2022-11-19