最近在linux下做了个关于qt界面的应用程序,需要打包生成deb安装,查阅了很多资料,在此整理记录一下。
1、使用linuxdeployqt打包qt#
linuxdeployqt下载及安装#
linuxdeployqt是一个linux下qt自动打包的工具,和windows平台的windeployqt用法类似。
执行如下命令:
1 | mv linuxdeployqt-x86_64.AppImage linuxdeployqt #重命名 |
linuxdeployqt使用#
linuxdeployqt使用较为简单,使用步骤如下:
- 新建一个deploy文件夹,将qt编译出的可执行文件拷贝到该文件夹目录下
执行
linuxdeployqt xxx(应用程序名) -appimage
命令,出现如下ERROR
信息提示时,不用处理即可。命令执行结束后,在该目录下会出现如下文件:
- 修改default.desktop文件
1
2
3
4
5
6
7
8
9
10
11default.desktop文件为菜单启动项文件,需要将其重命名,并复制到/usr/share/applications下。
--appName.desktop
[Desktop Entry]
Version=1.0 #app的版本
Name=appName #app的名字
Comment= this app use for xxx #说明信息
Exec=/path/to/your/QtApp/appName #app的执行路径,绝对路径
Icon=/path/to/your/app_icon/appName.ico #icon 路径,绝对路径
Terminal=false #是否在终端启动,效果自己试一下就知道了
Type=Application
Categories=Utility;Application;
2、使用dpkg打包生成deb包#
以上步骤完成之后,即可使用dpkg命令生成deb包,如果没有复杂的要求(开机加载启动项,卸载时删除等),即可通过以下步骤实现deb包打包:
- 新建app_deb文件夹(其它文件名字也可以),在该目录下创建软件需要安装的路径,
eg:/usr/local/src/AppName
。 - 将1步骤中文件拷贝到新创建的目录(
/usr/local/src/AppName
)下。 在app_deb文件夹下创建DEBIAN文件夹(文件名必须为DEBIAN),并在其中创建console文件,console文件内容如下:
1
2
3
4
5
6
7package: AppName
Version: 1.0.1
Architecture: i386
Depends:
Installed-Size: 512
Maintainer: xxx
Description: AppName-deb最后的文件目录如下如所示。
- 在app_deb目录下,执行
dpkg -b . AppName.deb
命令,即可生成deb包。
如果需要设置开机加载脚本等,就需要额外编写脚本放在DEBIAN目录下,DEBIAN下的脚本有以下几种:
- preinst
Debian软件包(“.deb”)解压前执行的脚本, 为正在被升级的包停止相关服务,直到升级或安装完成。 (成功后执行 ‘postinst’ 脚本)。 - postinst
主要完成软件包(“.deb”)安装完成后所需的配置工作. 通常, postinst 脚本要求用户输入, 和/或警告用户如果接受默认值, 应该记得按要求返回重新配置这个软件。 一个软件包安装或升级完成后,postinst 脚本驱动命令, 启动或重起相应的服务。 - prerm
停止一个软件包的相关进程, 要卸载软件包的相关文件前执行。 - postrm
修改相关文件或连接, 或卸载软件包所创建的文件。
打包deb文件成功之后,安装deb有2种方式:
- 直接双击deb文件安装
- 使用
sudo dpkg -i AppName.deb
进行安装
即可查看打的deb包安装是否正确。