deb打包教程 deb怎么安装

什么是 DEB 文件?以.deb结尾的文件称为 Debian 软件包文件 , 用于在 Linux 上安装应用程序 。DEB 文件仅用于基于 Debian 的 Linux 发行版 , 如Ubuntu 、统信UOS、麒麟系列等基于Linux内核的操作系统 。
目录结构创建

deb打包教程 deb怎么安装

文章插图

DEB打包目录结构基本固定 , 不要问我为什么要这样定义 , 其实我也想知道 。你暂且按我的步骤来 , 保证打包无恙 , 但有以下几点需要注意:
  • timedeb是自己定义 , 名字随意起 , 但后面需要跟版本号 , 我这里是1.0.0.0 , 如果不加版本号生成tar时会报错 。
  • bin下放可执行文件及图标 , 比如:我这里timePy是用Python pyinstaller生成的可执行程序 , 由于我只是测试 , 没有准备图标 。
  • timedeb.desktop是桌面文件 , 要保证文件名(我这里是timedeb)和info里的appid保持一致 。安装的时候就能够自动把桌面文件添加到/usr/share/applications,在启动器中就能够找到应用图标 。
timedeb.desktop文件内容(供参考)[Desktop Entry]Version=1.0.0.0Encoding=UTF-8Name=timePyComment=Client for single sign on UOS systemExec=/opt/apps/timedeb/bin/timePy %uIcon=/opt/apps/com.ultra.sso/icon/sso.icoTerminal=falseType=ApplicationCategories=Application;StartupNotify=trueName[zh_CN]=timePyGenericName[zh_CN]=Comment[zh_CN]=UOS时间日历MimeType=x-scheme-handler/timePyinfo文件内容(供参考){\"appid\": \"timedeb\",\"name\": \"timePy\",\"version\": \"1.0.0.0\",\"arch\": [\"amd64\"],\"permissions\": {\"autostart\": false,\"notification\": false,\"trayicon\": false,\"clipboard\": false,\"account\": false,\"bluetooth\": false,\"camera\": false,\"audio_record\": false,\"installed_apps\": false}}生成deb包在timedeb-1.0.0.0目录下执行dh_make命令 , 如果命令不存在 , 则需要安装 。
#安装指令命令apt install dh-make#打包命令dh_make --createorig -s -y命令执行成后 , 在timedeb-1.0.0.0下会生成debian目录 , 在上一级目录会生成
timedeb_1.0.0.0.orig.tar.xz文件 。
修改control文件control 主要用来描述软件的版本 , 名称等详细信息 , 如下所示:
Package -- 软件包名称
Version -- 版本号
Description -- 软件描述
Section -- 软件类型 utils, net, mail, text, x11
Priority -- 软件对系统的重要程度 , required, standard, optional, extra 等
Architecture -- 软件支持的平台 , 如 amd64 arm64 等
Installed-Size -- 软件尺寸
Depends -- 软件依赖的其他软件和库文件等 , 多个文件用逗号隔开
Pre-Depends -- 安装软件前需要安装的库或软件
Maintainer -- 打包者信息或者联系方式
安装过程中各个脚本的调用次序如下, 这些脚本均为 bash shell:
preinst 文件于软件包安装之前会被调用
postinst 文件于软件包安装之后被调用
prerm 文件于软件包卸载之前调用
postrm 文件于软件包卸载之后调用
control文件内容(供参考)Source: timedebSection: unknownPriority: optionalMaintainer: 小逗IT Build-Depends: debhelper (>= 11)Standards-Version: 4.1.3Homepage: #Vcs-Browser: https://salsa.debian.org/debian/timedeb#Vcs-Git: https://salsa.debian.org/debian/timedeb.gitPackage: timedebArchitecture: anyDepends: ${shlibs:Depends}, ${misc:Depends}Description: 这里是描述信息 详细描述(注意这一行前面要留一个空格!)新建 install 文件在debian 目录下新建 install 文件  , 文件内容如下:
timedeb/ /opt/appstimedeb/entries/applications/timedeb.desktop /usr/share/applications修改changelog文件把版本号 (1.0.0.0-1) 改成 (1.0.0.0) , 保持与上面info设定的版本号一致 , 不然系统读取deb的版本号就变成1.0.0.0-1 , 修改deb包的版本号也是在这个位置进行设置 。
deb打包教程 deb怎么安装

文章插图

删除所有 *.ex *.EX 类型文件rm *.ex *.EX执行打包命令在timedeb.1.0.0.0目录下执行如下命令:
sudo dpkg-buildpackage -rfakeroot -tc -uc -us -b这里可能因为操作系统版本差异会有两个报错:
  1. 如果报错-rfakeroot不存在 , 则把-rfakeroot去掉 。
  2. 如果报错dh_shlibdeps: Aborting due to earlier error,打开rules文件 , 在dh $@后添加:
override_dh_auto_build: override_dh_shlibdeps:--dpkg-shlibdeps-params=--ignore-missing-info override_dh_strip: