[Qt]-打包程序为Debian的deb格式的安装包 ​


deb是Debian Linux的软件包格式。一般来说是需要通过编译源码然后制作deb包。

但是,为了快速方便,下面直接在程序打包的基础上来进行deb包的封装。

步骤如下:

先完成程序的打包

先把程序打包完成。

创建需要的目录结构和文件

首先建立一个工作目录,比如在主文件夹下建立YouAppName目录:

$ cd ~
$ mkdir YouAppName
$ cd YouAppName


deb文件在安装的时候默认是将文件释放到Linux系统的根目录下,即/

如果我们这里设定安装路径为/opt,那么就安装到opt下。

操作如下:

mkdir -p opt
# 把之前打包好的cp到设置目录结构的opt下
cp -a YouAppName/opt/


我们创建一个opt目录,这样安装的时候就可以安装到系统的/opt下面去了。你创建什么目录,它安装到哪里去(前提得是Linux系统下的标准目录。)

同时我们还需建立一个DEBIAN目录,需要在DEBIAN目录下创建一个control文件,并加入以下内容:

package: YouAppName 
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Depends:
Maintainer: you email or inc
Description: YouAppName-deb


desktop

[Desktop Entry]
Version=1.0 #app的版本
Name=YouAppName #app的名字
Comment= this app use for test #说明信息
Exec=/opt/YouAppName/YouAppName.sh #app的执行路径,请使用绝对路径
Icon=/opt/YouAppName/lib/YouAppName.png #icon 路径,请使用绝对路径
Terminal=false #是否在终端启动
Type=Application
Categories=Utility;Application;


大概的项目结构(非debian标准)

注: 请根据实际情况灵活配置目录,请参考下面我组织的结构

//  TODO 后面有空补充完善

└── YouAppName #目录
├── opt #目录
│ ├── YouAppName #目录 自己应用程序的名字
│ |── YouAppName # 程序或文件 Qt生成的或其它可运行程序
| |—— YouAppName.sh #程序的启动脚本。
| |—— 项目封装的so或者第三方的so文件和可执行文件放在同一层级(只是建议)
│ |── lib #目录 Qt相关的的so文件
| |—— plugins #目录 Qt的插件
│ ├── YouAppName.desktop
│ ├── YouAppName.png
│ ├── ...等等文件

└── DEBIAN #目录 名字确定
├── control #控制文件 名字不可改,必须有这个文件
├── postinst #脚本文件 名字不可改,运行sudo dpkg -i xx.deb命令时,会运行这个脚本. 非必须文件
├── postrm #脚本文件 名字不可改,运行sudo dpkg -r app 命令时,会运行这个脚本 .非必须文件


封装为debian系的deb安装包命令

sudo dpkg -b YouAppName/ YouAppName_V1.0_amd64.deb


安装,卸载debian包

​dpkg命令​

​dpkg的基本使用​

// 注: 需要写软件的名字,tab并不能补全
sudo dpkg -i xxx.deb 安装deb包
sudo dpkg -r xxx 卸载
sudo dpkg -P xxx 卸载(并且删除配置文件)(推荐使用这个,卸载的干净)


注意事项

给desktop文件添加执行权限(非必须,但是建议)

chmod 755 YouAppName.desktop

指定desktop文件

不过xxx.desktop 的写法要一个限制:包含“Exec”那一行,“=”和要执行的程序之间要留一个空格。也就是Exec=XXX是无法通过“sh xxx.desktop”执行,正确的是Exec= XXX。



欢迎交流学习,共同进步

限本人水平有限,如有错误请指教,谢谢