资讯专栏INFORMATION COLUMN

[Qt]Qt程序发布:在ubuntu下打包成Debian包的过程

APICloud / 3670人阅读

摘要:在下将程序打包,发布成包的过程下面的步骤对于所有的打包程序都是通用的,所以完全可以写一个脚本,把这个包过程自动化,但是在自动化之前,我们需要弄清楚,一步一步打包是如何进行的,下面详细讲解。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/60938.html

相关文章

  • Qt 程序 Windows 发布

    摘要:在中,调试运行要发布的程序,在中,找到该文件并选中,在下面就看到依赖的了。寻找依赖寻找依赖系统目录下的,一般不用关心,按排序,寻找目录及目录下的文件,将这些拷贝至发布程序目录下。 「博客搬家」 原地址: CSDN 原发表时间: 2016-06-04 本文讨论在 Windows 平台下编译成功的 Qt 程序,如何在未配置 Qt 开发环境的 Windows 平台下独立运行的方法。 经...

    rottengeek 评论0 收藏0
  • [Qt]Qt程序发布windows打包exe文件的过程

    摘要:程序发布理论知识和相关工具程序在发布时只需要把需包含的动态链接库文件放在需要发布程序同一目录即可那么如何找到可运行程序,依赖哪些动态链接库文件呢网上有人用这个程序打开我们的可运行程序,就可以找到该程序依赖于哪些动态链接库了博主用试了一下,效 0:Qt程序发布理论知识和相关工具 Qt程序在发布时只需要把需包含的dll动态链接库文件放在需要发布程序同一目录即可 那么如何找到可运行程序,...

    darry 评论0 收藏0
  • 以太坊连载(八):C++客户端的安装与定制(二)

    摘要:为纠正这个问题,需要将包含以太坊共享库的文件添加到环境变量为安装依赖警告应用没有在上尝试过。在写本文档时,这些交叉建立二进制已经成功地使用在以下设备上待办的有下一篇文章我们将会介绍以太坊连载九客户端的安装与定制三感谢朝夕 从源安装客户端 概览cpp-ethereum 代码库在几个Git库中传播,库在Git上被分组为webthree-umbrella库下的子模块。 我们用一般的CMake...

    zhangqh 评论0 收藏0
  • Qt/Ununtu篇一:基于ubuntu操作系统Qt的安装

    摘要:首先下载安装包进入官网下载地址,如图所示顺带说说目录结构各种开发工具安装包,新旧都有可以下载开发环境和源代码。迷你版,目前是针对的版本。正式发布版,是与开发版相对的稳定版库和开发工具可以下载开发环境和源代码。 ...

    Galence 评论0 收藏0
  • How to install sougoupinyin on Debian/Ubuntu.

    #apt--get remove fcitx* && apt autoremove ###防止过多依赖包的干扰 #apt-get update #apt-get fcitx im-config #im-config ###选择为fcitx 下载Linux版本的搜狗输入法deb软件包 #dpkg -i sogou*.deb ; apt-get -f install UP...

    liuhh 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<