0:在ubuntu下将Qt程序打包,发布成Debian包的过程
下面的步骤对于所有的打包程序都是通用的,所以完全可以写一个脚本,把这个包过程自动化,但是在自动化之前,我们需要弄清楚,一步一步打包是如何进行的,下面详细讲解。
1:建立好如下文件(夹)结构
└── mydeb #目录 名字自取
|
├── application #目录 名字确定
│ ├── catchGG #目录 自己应用程序的名字
│ │ ├── catchGG #程序或文件 Qt生成的 或其它 可运行程序
│ │ └── pycatchgg #程序或文件 Qt生成的 或其它 可运行程序
│ └── lib
│ ├── catchGG.desktop #文件 需要复制到/usr/share/applications/目录,dash中可搜索
│ ├── catchGG.png #文件 应用程序在unity中显示的图标 需要复制到/usr/share/pixmaps/目录
│
│
└── DEBIAN #目录 名字确定
├── control #文件 名字不可改
├── postinst #脚本文件 名字不可改 ,运行sudo dpkg -i xx.deb命令时,会运行这个脚本
├── postrm #脚本文件 名字不可改 ,运行sudo dpkg -r app 命令时,会运行这个脚本
上面结构中: mydeb目录下面的两个目录 application 和 DEBIAN 名字不可改变的
mydeb/application/lib目录下面的 应用程序图标文件就不用说了,主要是.desktop文件 里面应该写些什么 内容
mydeb/DEBIAN/目录下面的三个文件的内容,是我们需要自己动手写的
2:.desktop文件的基本内容
#下面是一个基本的例子,按下面格式,改成自己需要的内容即可
[Desktop Entry]
Version=0.1 #应用程序版本
Name=catchGG #应用程序名
Comment=Back up your data with one click #应用程序描述
Exec=/usr/bin/catchGG #可运行应用程序最终的绝对路径
keywords=google,catchgg,catchGG #在dasn串搜索时,可用的关键字
StartupNotify=true #这个不知道是什么意思
Terminal=false #运行时不需要打开终端
Type=Application #应用程序类型,在dash和分类中会有显示,还有其它的类型
Categories=Utility;Application; #应用程序的分类,工具/应用程序
Hidden=false #是否隐藏(否),不知道是什么意思
Icon=/usr/share/pixmaps/catchGG.png #应用程序图标名的绝对路径
3:control文件的基本内容
#下面是一个基本的例子,就不一个一个说了,都很容易
#有一点需要说一下,很多人都不知道Depends后面的依赖库名字是如何得到的,实际上非常容易
使用ldd命令,后面加你开发的Qt程序的名字,就可以得到你的Qt程序需要哪些动态链接库(配合grep qt命令使用)
Package:catchGG
Version:0.1
Section:utils
Priority:extra
Maintainer:Me You(QQ:397916230)
Depends:libqt5widgets5(>=5.0),libqt5gui5(>=5.0),libqt5core5a(>=5.0),libqt5x11extras5(>=5.0),libqt5x11extras5-dev(>=5.0)
Architecture:amd64
Description: The software is an opensource package from 397916230@qq.com
4:postinst脚本的基本内容
#在说脚本里面内容时,先告诉大家如何创建这个脚本,并使这个脚本具有个运行的权限
touch postinst && chmod 755 postinst
#下面是这个脚本的基本内容----一个例子
#可以看到就是一个基本的shell脚本,做了如下事情
#1:告诉用户,安装过程中做了什么 echo命令显示
#2:把应用程序图标文件和.desktop文件 mv到对应的系统目录中 (注意使用的是/applicaton/lib 这种路径格式)
#3:把可运行的Qt开发的程序,或其它二进行可运行程序(或其它库文件)复制到系统的path路径下
#4:设置一些基本的用户环境变量
echo "Start to install"
mv -f /application/lib/catchGG.desktop /usr/share/applications/
mv -f /application/lib/catchGG.png /usr/share/pixmaps/
mv -f /application/catchGG/* /usr/bin/
echo "set QT_PLUGIN_PATH in file .profile"
echo "QT_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins" >> ~/.profile
echo "Install ok"
5:postrm脚本的基本内容
#在说脚本里面内容时,先告诉大家如何创建这个脚本,并使这个脚本具有个运行的权限
touch postrm && chmod 755 postrm
#下面是这个脚本的基本内容----一个例子
#把之间安装在系统中的文件都给删除,就搞定了,
echo "Start to remove"
rm -rf /usr/share/applications/catchGG.desktop
rm -rf /usr/share/pixmaps/catchGG.png
rm -rf /usr/bin/catchGG
rm -rf /usr/bin/pycatchgg
echo "Remove finished!
6:总结
打包的过程照着上面的步骤,一步一步来,还是非常方便的
打包命令也非常容易,如下:
sudo dpkg -b mydeb/ Qtapp_0.1_amd64.deb
打包完成后,进行安装,删除测试
# 安装
sudo dpkg -i Qtapp_0.1_amd64.deb
sudo apt-get install -f #自动 安装程序需要的依赖库
# 删除
sudo dpkg -r app_name
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。