精华内容
下载资源
问答
  • 2021-09-06 14:00:23

    制作deb包

    • 准备要打包的文件,存放目录如下
    |——MyDeb-deb
         |————usr
               |————local
                     |——.sslvpn
                     |——应用具体文件(包括bin,lib,启动脚本等.安装后应用就在/usr/local/.sslvpn)
               |————share
                    |————icons 
                        |——deb.png(图标文件生成到/usr/share/icons/)
                    |————applications                           
                        |——deb.desktop(桌面文件生成到/usr/share/applications/|————DEBIAN(必须大写、用来制作打包文件)
                |————control(描述deb包的信息必须的文件)
    
    • 编辑control文件
      格式如下即可
    Package: sslvpn
    Version: 1.0.2
    Section: free
    Prioritt: optional
    Architecture: amd64
    Maintainer: Dptech
    Description: sslvpn1.0.2
    
    • 编辑其他文件(可选)
      例如安装后要做的操作,可以写在postinst脚本,卸载后要做的工作写在postrm脚本,以postrm为例(做一些清理工作)
    # !/bin/sh
    
    # clean .sslvpn and destkop file and log if exists
    for I in /home/*; do
        THISUSER=`echo $I | cut -d "/" -f 3 -`
        USERID=`id -u $THISUSER 2>/dev/null || echo "_FALSE_"`
        if [ $USERID = '_FALSE_' ] ; then
            continue
        fi
    
        DIST_DIR=$I/.sslvpn
        AUTOSTART_DIR=$I/.config/autostart
        AUTOSTART_NAME=sslvpn-client.desktop
        LOG_FILE=/tmp/dpsslvpn.log
    
        if [ -d $DIST_DIR ]; then 
            rm -rf $DIST_DIR
        fi
    
    
        if [ -f $AUTOSTART_DIR/$AUTOSTART_NAME ]; then
            rm $AUTOSTART_DIR/$AUTOSTART_NAME
        fi
    
        if [ -f $LOG_FILE ]; then
            rm $LOG_FILE
        fi
    done
    
    exit 0
    
    

    deb包操作命令

    1. 打包dpkg -b
      dpkg -b pack_x86 mydeb-1.deb
      第一个参数为将要打包的目录名,第二个参数为生成包的名称

    2. 安装(解包并配置)
      dpkg -i mydeb-1.deb

    3. 卸载删除包,但保留配置文件
      dpkg -r my-deb

    4. 查看deb包是否安装/deb包的信息
      dpkg -s my-deb

    5. 解压deb包中DEBIAN目录下的文件(至少包含control文件)
      dpkg -e mydeb-1.deb mydeb-1/DEBIAN

    更多相关内容
  • 本次测试为在ubuntu打包程序为deb文件包,然后再Ubuntu和银河麒麟下安装测试,均可使用 1、Qt下Release模式编译工程文件,文件名为wapp 2、创建如下基本目录结构 本目录结构在~目录下创建 wapp DEBIAN // 存放...

    本次测试为在ubuntu打包程序为deb文件包,然后再Ubuntu和银河麒麟下安装测试,均可使用

    1、Qt下Release模式编译工程文件,文件名为wapp

    在这里插入图片描述

    2、创建如下基本目录结构

    本目录结构在~目录下创建

    wapp
        DEBIAN    // 存放control文件,用于记录安装包相关信息的配置文件  
        usr
            local
                lib          //存放程序所需的链接库
                wapp        // 存放程序文件(建议与程序同名)
            share
                applications    // 存放 *.desktop 文件
                icons            // 存放软件的图标 *.png,*.ico
    

    在这里插入图片描述
    在这里插入图片描述

    3、 将编译好的wapp文件及需要加载的数据文件放在usr/local/wapp目录下

    定位到usr/local/wapp目录下,并创建脚本文件wapp.sh

    cd ~/wapp/usr/local/wapp      //具体目录改成自己创建的目录
    touch wapp.sh                                   //建议不使用sudo命令
    

    添加wapp.sh的内容

     #!/bin/sh 
    appname=`basename $0 | sed s,\.sh$,,` 
    dirname=`dirname $0` 
    tmp="${dirname#?}" 
    if [ "${dirname%$tmp}" != "/" ]; then 
    dirname=$PWD/$dirname 
    fi 
     
    LD_LIBRARY_PATH=$dirname 
    export LD_LIBRARY_PATH 
    $dirname/$appname "$@"
    

    或者

    #!/bin/sh 
    #pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/local/shixun/wapp
    #setstatus -p softmode
    /usr/local/wapp/wapp
    

    #pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/local/shixun/wapp这句是用来sudo启动软件的,这里不需要,如果软件启动后没有创建和读写文件的权限可以加入,但是这样会导致银河麒麟下不能使用中文输入,所以屏蔽了,在银河麒麟下不能qt应用不能创建文件和写文件的话,就开启软模式。
    保存后并输入如下命令:

    sudo chmod +x wapp.sh
    sudo ./wapp.sh
    

    如果是ubuntu的则会弹出自己程序的界面,但是因为我这个银河麒麟是在arm64上面跑的,所以无法运行麒麟上的程序,只是用来打包

    4、 提取并整理依赖库(建议在非中文路径下)

    定位到wapp目录下,并创建脚本文件copylib.sh文件

    touch copylib.sh
    

    修改copylib.sh文件,写入如下内容:

    #!/bin/sh
    
    if [ ! -d "./dep" ]; then
      mkdir ./dep
    else : then
      rm -rf ./dep
      mkdir ./dep
    fi
    
    ldd ./**wapp**|cut -d ">" -f 2|grep lib|cut -d "(" -f 1|xargs tar -chvf ./dep/**wapp**.tar
    echo "ok"
    

    标粗的地方要修改为自己的
    保存后并输入如下命令:

    sudo chmod +x copyllib.sh
    ./copylib.sh wapp
    

    该目录下会得到一个dep文件夹

    5、整理依赖库

    1、将dep文件夹的子文件夹里的依赖库文件复制粘贴到wapp/usr/local/lib目录下;
    2、根据自己程序需要(一般程序均会用到),在wapp/usr/local/wapp目录下创建platforms文件夹,并将Qt5.12.4/5.12.4/gcc_64/plugins/platforms/libqxcb.so(按照自己安装的Qt安装目录及版本寻找)复制到该文件夹下;
    3、根据自己程序情况,将其他所用到的依赖库添加到具体目录下;

    6、编写配置文件

    在DEBIAN路径下创建control文件

    cd ~/wapp/DEBIAN
    touch control
    

    control文件,添加如下内容

    package: wapp                                     
    version: 1.0.0                                   
    architecture: arm64                            
    maintainer: wapp                              
    description: wapp Project     
     
    ------- 以下为注释部分,执行时,请将从这一行开始的所有内容删除  --------
    package 表示安装包的名字 
    version 表示次安装包的版本
    architecture 当前系统的架构的信息,银河麒麟在arm64的飞腾上跑的,所以这里用的arm64,若是Ubuntu则改为amd64
    maintainer 此安装包的维护者
    description 此安装包的描述
    

    7、在applications目录下创建wapp.desktop文件

    cd ~/wapp/usr/share/applications
    touch wapp.desktop
    

    修改该文件并添加内容

    [Desktop Entry]
    Encoding=UTF-8
    Name=wapp
    Exec=/usr/local/wapp/wapp.sh
    Icon=/usr/share/icons/logo3.ico
    Comment="released_on_2022_05_16"
    Terminal=false
    Type=Application
    Categories=Development
     
    ------- 以下为注释部分,执行时,请将从这一行开始的所有内容删除  --------
    Exec 目标文件,编译好的程序软件(完整路径)
    Icon 图标文件(完整路径)末尾不能有空格,否则将会导致无法加载图标
    Categories可以取以下值,表示程序的启动快捷方式放在哪个菜单下:
    			应用菜单Application;
    			Network放在互联网(Internet);
    			办公 Office;
    			图形 Graphics;
    			声音和视频 AudioVideo;
    			系统工具 System;
    			编程 Development;
    			附件 Utility;
    			影音 AudioVideo;
    			游戏 Game;
    			首选项 Settings(GNOME;GTK;Settings;HardwareSettings;);
    			系统管理 System;Settings;
    

    但是发现使用Exec=/usr/local/wapp/wapp.sh时,在飞腾加银河麒麟上的桌面添加不成功这个wapp.desktop,所以这里使用的Exec=/usr/local/wapp/wapp

    sudo chmod +x wapp.desktop
    

    8、将.png图片或.ico复制到icons目录下,这个图片就是qt程序的.pro文件中定义的图标

    RC_ICONS = logo3.ico
    

    在这里插入图片描述

    9、最终目录结构

    wapp
            DEBIAN
                control  
            usr
                local
                    lib
                        libs.......
                    wapp
                        platforms
                            libqxcb.so
                share
                    applications    
                        wapp.desktop
                    icons            
                        logo3.ico
    

    10、打包制作安装包

    在~文件夹下输入如下指令
    deb包正确的命名规则program-name_version_architeture.deb。所有的值必须与它们在control文件里对应的语句相同

    sudo dpkg -b wapp/ wapp_1.0.0_arm64.deb
    或
    sudo dpkg -b wapp/ wapp_linux_arm64.deb
    

    dpkg -b wapp/ wapp_linux_arm64.deb这个我测试可以

    若为ubuntu下打包,则将改为
    sudo dpkg -b wapp/ wapp_linux_amd64.deb

    一段时间便可在~目录下得到deb文件

    11、安装测试

    在另一台linux系统下,将deb文件拷贝到某目录下,命令定位到该目录下,并输入命令进行安装

    sudo dpkg -i wapp.0.0_arm64.deb
    

    12、运行测试

    找到wapp.desktop文件,路径在/usr/share/applications/wapp.desktop
    如果桌面没有wapp.desktop,则可将/usr/share/applications/wapp.desktop复制到桌面

    13、 卸载测试

    sudo dpkg -r wapp
    

    14、附录

    由于本项目是在ubuntu交叉编译的银河麒麟上的qt程序,用的aarch64的编译器编译的qt的源码生成的qmake,后来将这个编译好的qt的路径加入到环境变量,发现并没有生效,所以后来采用的是,将编译好的qt源码放到银河麒麟,并设置环境变量,前面文章有介绍,然后在银河麒麟安装好软件后,就可以双击运行了。

    运行后发现对于数据库没有写的权限,也就是数据库写不进去,解决:终端输入:

    sudo chmod -R 777 数据库文件夹路径
    
    展开全文
  • 在Ubuntu上用qt软件编写的程序完成后,如果需要在另一台纯净的Linux系统上运行,则可以通过打包deb文件的形式进行移植,经测试可用。 0 准备前说明 修改程序.pro文件,将程序运行时要加载的数据文件放置在运行文件...

    在Ubuntu上用qt软件编写的程序完成后,如果需要在另一台纯净的Linux系统上运行,则可以通过打包成deb文件的形式进行移植,经测试可用。

    0 准备前说明

    修改程序.pro文件,将程序运行时要加载的数据文件放置在运行文件目录下。(例如要加载人脸检测的文件)

    QMAKE_POST_LINK += "cp -u $${_PRO_FILE_PWD_}/facefile/shape_predictor_68_face_landmarks.dat $${OUT_PWD};" \
    

    这样在Release编译时,会将该文件自动复制到Release目录下,为后面的打包步骤省了很多麻烦。

    1 环境

    系统环境:Ubuntu16.04
    Qt版本:5.9

    2 步骤

    2.1 Qt下Release模式编译工程文件(文件名为Test)

    2.2 整理文件

    2.2.1 创建如下基本目录结构

    demo
        project
            DEBIAN    // 存放control文件,用于记录安装包相关信息的配置文件  
            usr
                local
                    lib                    //存放程序所需的链接库
                    Test        // 存放程序文件(建议与程序同名)
                share
                    applications    // 存放 *.desktop 文件
                    icons            // 存放软件的图标 *.png
    

    2.2.2 将编译好的Test文件及需要加载的数据文件放在Test目录下

    2.2.3 定位到Test目录下,并创建脚本文件Test.sh

    cd ~/demo/project/usr/local/Test    //具体目录改成自己创建的目录
    touch Test.sh                      //建议不使用sudo命令
    

    双击Test.sh文件,写入如下内容:

    #!/bin/sh 
    appname=`basename $0 | sed s,\.sh$,,` 
    dirname=`dirname $0` 
    tmp="${dirname#?}" 
    if [ "${dirname%$tmp}" != "/" ]; then 
    dirname=$PWD/$dirname 
    fi 
     
    LD_LIBRARY_PATH=$dirname 
    export LD_LIBRARY_PATH 
    $dirname/$appname "$@"
    

    保存后并输入如下命令:

    sudo chmod +x Test.sh
    sudo ./Test.sh
    

    则会弹出自己程序的界面;

    2.3 提取并整理依赖库(建议在非中文路径下)

    2.3.1 定位到Test目录下,并创建脚本文件copylib.sh文件

    touch copylib.sh
    

    双击Test.sh文件,写入如下内容:

    #!/bin/sh
    
    if [ ! -d "./dep" ]; then
      mkdir ./dep
    else : then
      rm -rf ./dep
      mkdir ./dep
    fi
    
    ldd ./Test |cut -d ">" -f 2|grep lib|cut -d "(" -f 1|xargs tar -chvf ./dep/Test.tar
    echo "ok"
    

    保存后并输入如下命令:

    sudo chmod +x copyllib.sh
    ./copylib.sh Test
    

    该目录下会得到一个deb文件夹

    2.3.2 整理依赖库

    1、将deb文件夹的子文件夹里的依赖库文件复制粘贴到demo/project/usr/local/lib目录下;
    2、根据自己程序需要(一般程序均会用到),在Test目录下创建platforms文件夹,并将Qt5.9.4/5.9.4/gcc_64/plugins/platforms/libqxcb.so(按照自己安装的Qt安装目录及版本寻找)复制到该文件夹下;
    3、根据自己程序情况,将其他所用到的依赖库添加到具体目录下;

    2.4 编写配置文件

    2.4.1 在DEBIAN路径下创建control文件

    cd ~/demo/project/DEBIAN
    touch control
    

    双击control文件,添加如下内容

    package: Test                                     
    version: 1.0.0                                   
    architecture: amd64                            
    maintainer: Test                              
    description: Test Project     
     
    ------- 以下为注释部分,执行时,请将从这一行开始的所有内容删除  --------
    package 表示安装包的名字 
    version 表示次安装包的版本
    architecture 当前系统的架构的信息
    maintainer 此安装包的维护者
    description 此安装包的描述
    

    2.4.2 在applications目录下创建Test.desktop文件

    cd ~/demo/project/usr/share/applications
    touch Test.desktop
    

    双击该文件并添加内容

    [Desktop Entry]
    Encoding=UTF-8
    Name=Test   
    Exec=/usr/local/Test/Test.sh
    Icon=/usr/share/icons/Test.png
    Comment="released_on_2020_08_05"
    Terminal=false
    Type=Application
    Categories=Development
     
    ------- 以下为注释部分,执行时,请将从这一行开始的所有内容删除  --------
    Exec 目标文件(完整路径)
    Icon 图标文件(完整路径)末尾不能有空格,否则将会导致无法加载图标
    Categories可以取以下值,表示程序的启动快捷方式放在哪个菜单下:
    			应用菜单Application;
    			Network放在互联网(Internet);
    			办公 Office;
    			图形 Graphics;
    			声音和视频 AudioVideo;
    			系统工具 System;
    			编程 Development;
    			附件 Utility;
    			影音 AudioVideo;
    			游戏 Game;
    			首选项 Settings(GNOME;GTK;Settings;HardwareSettings;);
    			系统管理 System;Settings;
    
    sudo chmod +x Test.desktop
    

    2.4.3 将一张.png图片重命名为Test.png并复制到icons目录下

    2.5 本文最终目录如下

    demo
        project
            DEBIAN
                control  
            usr
                local
                    lib
                        libs.......
                    SeerTools
                        platforms
                            libqxcb.so
                share
                    applications    
                        SeerTools.desktop
                    icons            
                        SeerTools.png
    

    2.6 打包制作安装包

    在demo文件夹下输入如下指令
    deb包正确的命名规则program-name_version_architeture.deb。所有的值必须与它们在control文件里对应的语句相同

    dpkg -b project/ Test_1.0.0_amd64.deb
    

    一段时间便可得到deb文件

    2.7 安装测试

    在另一台linux系统下,将deb文件拷贝到某目录下,命令定位到该目录下,并输入命令进行安装

    sudo dpkg -i Test_1.0.0_amd64.deb
    

    (或者直接双击该文件进行安装(未验证))

    2.8 运行测试

    找到Test.desktop文件,路径在/usr/share/applications/Test.desktop
    或者在桌面左上角点击图标,在应用里找到运行文件

    2.9 卸载测试(未验证)

    sudo dpkg -r Test
    

    3 参考

    在Ubuntu上打包Qt工程,并实现其安装和使用。
    https://blog.csdn.net/qq_26971331/article/details/87939098
    ubuntu下打包制作deb安装包
    https://blog.csdn.net/yangbingzhou/article/details/33318625



    写于关雎


    在这里插入图片描述


    新浪微博:https://weibo.com/tianzhejia
    CSDN博客:https://blog.csdn.net/qq_35605018
    博客网站:http://www.zhijiadeboke.xyz
    GitHub:https://github.com/ZhijiaTian
    QQ邮箱:2461824656@qq.com
    126邮箱:tianzhejia@126.com
    Outlook邮箱:tianzhejia@outlook.com

    以上均可与本人取得联系,欢迎探讨。^ v ^

    展开全文
  • 首先,来说下,本教程实现的功能:在linux下对开发的Qt应用,进行拷贝依赖文件dll等,并打成deb安装包;实现可安装、卸载,安装完毕自动在开始菜单下和桌面添加快捷方式;卸载后自动删除快捷方式,以及删除应用生成...

    首先,来说下,本教程实现的功能:

    在linux下对开发的Qt应用,进行拷贝依赖文件dll等,并打成deb安装包;

    实现可安装、卸载,安装完毕自动在开始菜单下和桌面添加快捷方式;

    卸载后自动删除快捷方式,以及删除应用生成的log文件。

    测试环境:ubuntu 16.04

    一、使用linuxdeployqt拷贝依赖文件

    win系统下有个自动拷贝依赖文件的工具windeployqt,而linux系统下也有个类似的工具,叫linuxdeployqt,原理一个意思。

    1. 下载linuxdeployqt

    linuxdeployqt-x86_64.AppImage,下载地址:

    https://github.com/probonopd/linuxdeployqt/releases

    abab93ac4184c939022732001ef41e40.png

    2. 安装linuxdeployqt

    为了我们后面使用时,方便一点,我们把这长长的名字改短点吧:

    mv linuxdeployqt-6-x86_64.AppImage linuxdeployqt

    然后修改为可执行权限

    chmod 777 linuxdeployqt

    再把这个可执行文件扔进/usr/local/bin目录,这样,我们就可以在其他目录访问了

    mv linuxdeployqt /usr/local/bin

    测试是否安装成功

    linuxdeployqt --version

    输出版本信息,表示安装成功。

    b430575537b926a604ad6de9ace24258.png

    3. Qt库路径设置到环境变量

    工具会根据生成的可执行文件,自动搜索依赖,故我们需要确保Qt库的相关路径设置到环境变量中,这样工具在搜索时才能找到,并拷贝它们。

    另外拷贝文件,对环境变量的使用,不想要重启系统那么麻烦,所以我们修改.bashrc文件,仅对当前用户永久有效。

    vim ~/.bashrc

    在.bashrc文件末尾,追加内容如下:

    #add qt env

    export PATH=/opt/Qt5.13.0/5.13.0/gcc_64/bin:$PATH

    export LIB_PATH=/opt/Qt5.13.0/5.13.0/gcc_64/lib:$LIB_PATH

    export PLUGIN_PATH=/opt/Qt5.13.0/5.13.0/gcc_64/plugins:$PLUGIN_PATH

    export QML2_PATH=/opt/Qt5.13.0/5.13.0/gcc_64/qml:$QML2_PATH

    其中,/opt/Qt5.13.0/5.13.0/gcc_64是本次测试环境Qt安装目录,大家根据自己的情况替换。

    然后,使用source命令让文件立即生效。

    source ~/.bashrc

    4. 拷贝依赖文件

    拷贝前,确认生成的是Release版本的程序,这个是常识。

    我们在根目录下建立TestSetup目录,用于放置打包相关的文件;

    并在TestSetup下继续建个Test目录,用来装Test应用及拷贝文件。

    mkdir TestSetup

    cd TestSetup

    mkdir Test

    把我们的应用Test拷贝到Test目录下

    492454028dd8714595e4cec89e4ddf6d.png

    使用命令执行依赖文件拷贝

    linuxdeployqt Test -appimage

    终端报错,如下:

    2878f2ad41872d966726fe04137c97a1.png

    不用管它,是关于桌面文件的,后面我们直接编辑它。

    一会后,/TestSetup/Test目录下,已经把依赖全部拷贝好了。

    db8fb44053a72215e0bde647bcf9e3db.png

    若你的应用中有调用其他库、配置文件等,那么手动拷贝到此目录下。

    5. 配置共享库搜索路径(可选)

    如果你的应用中,调用了其他的库,又想要放在某个指定目录下,那么可以在应用同目录下,添加qt.conf文件,指定库搜索路径。这块知识,就自行百度吧,反正最终目的,能正常启动应用就行。

    6. 测试应用能否正常运行

    此时,一个完整的运行环境已经具备了,我们测试一下。

    重新开一个终端,在该终端的环境变量中去掉Qt库相关的路径,修改后的环境变量只对该终端生效,然后我们执行应用,看能否运行。

    操作过程:先用export查看有哪些环境变量设置了Qt路径。

    export

    ec6954dff3869f2fccbdb1f82d60f94d.png

    如果本教程之前没有配置过qt环境变量,那么结果应该和.bashrc文件我们追加的内容一致的。

    然后把这些环境变量中Qt路径去掉:

    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

    export LIB_PATH=

    export PLUGIN_PATH=

    export QML2_PATH=

    测试启动应用

    ./Test

    此时如果不出意外,应该可以正常启动。

    如果有意外,那就根据实际情况,先把问题解决,再继续。

    二、打成deb包

    1. deb包安装路径原理简述

    下面举个例子进行说明,我们先来看打包目录与安装后目录结构对比。

    打包目录,DEBIAN下面为deb包控制文件,应用与依赖文件位于source/opt/Test/,如下:

    source

    ├── DEBIAN

    │ └── control

    │ └── postinst

    │ └── postrm

    ├── opt

    └── Test

    ├── Test

    └── xxx

    若按照此打包目录生成deb,安装后,其目录如下:

    /

    ├── opt

    └── Test

    ├── Test

    └── xxx

    小结:

    DEBIAN目录下主要存放一些控制文件和脚本,具体后面使用到时,再细说。

    DEBIAN目录固定放置于打包目录顶层。

    deb包安装时,默认将内部文件,释放至根目录下(/),故我们需要在打包时,将安装目录层次创建好,以达到想要的安装路径效果。

    2. 规划安装路径

    我们希望将Test应用安装到/opt/Test/下,下面开始创建目录层次。

    在/TestSetup/下创建output目录,用于存放生成的deb包;

    创建source目录,用于存放打包文件,如下:

    3ef78c58c9337eb7f9134a441b644426.png

    在source目录下,创建DEBIAN目录、创建安装路径层次opt目录以及opt/Test目录,如下:

    9e90960a7b98f481d2212d47d93f3ce1.png

    然后将前面我们拷贝的依赖文件,全部移动到/TestSetup/source/opt/Test/目录下,如下:

    55019aef91e97dee5cc01e829d665e48.png

    3. 配置*.desktop桌面快捷方式文件

    还记得前面,拷贝依赖文件时报错吗,就是这个桌面文件。

    3b68d167307aa9b2d5c9122fa06526fa.png

    直接把它扔到桌面文件夹(/root/Desktop/),它就可以变成一个带图标的快捷方式,类似win。

    我们把位于/TestSetup/source/opt/Test/default.desktop改为Test.desktop;

    它有如下内容,需要编辑:

    [Desktop Entry]

    Type=Application

    Name=My Test #应用的名字(快捷方式显示的文字)

    Exec=/opt/Test/Test #应用的执行路径(绝对路径)

    Icon=/opt/Test/Test.png #应用的图标(绝对路径)

    Comment=This is my test #说明信息

    Terminal=true #是否允许在终端启动

    我们按照上述内容进行编辑,其中图标,自己随便去下载一个.png放到/TestSetup/source/opt/Test/Test.png即可。

    注意:

    Test.desktop中的路径需要填写deb包的安装路径,非打包路径。

    4. 创建deb包之control文件

    control文件主要描述软件包的名称(Package),版本(Version),Installed-Size(大小),Maintainer(打包人和联系方式)以及描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。

    我们在DEBIAN目录下创建名为control的文件,内容如下:

    Package: mytest

    Version: 0.1.0

    Section: utils

    Priority: optional

    Architecture: amd64

    Depends:

    Installed-Size: 512

    Maintainer: 123@163.com

    Description: my test package

    含义:

    Package:包名。记住,后面卸载时候需要包名。

    Version:应用版本。

    Architecture:架构,我这里是amd64。

    Maintainer:维护人员联系方式,看着办。

    Description:软件包描述。

    其他的,这里没用到,就不写了,自己百度吧。

    5. 创建deb包之postinst文件

    负责安装完成时的配置工作,软件安装完后,执行该Shell脚本,一般用来配置软件执行环境,必须以“#!/bin/sh”为首行。

    我们在DEBIAN目录下创建名为postinst的文件,内容如下:

    #!/bin/sh

    cp /opt/Test/Test.desktop /usr/share/applications/

    cp /opt/Test/Test.desktop /root/Desktop/

    主要将Test.desktop拷贝至2个目录,Desktop目录下,自动生成桌面快捷方式。

    applications目录下,生成开始菜单中,other菜单下子项。

    最终效果,查看文章末尾处效果图。

    6. 创建deb包之postrm文件

    软件卸载后,执行该Shell脚本,一般作为清理收尾工作,必须以“#!/bin/sh”为首行。

    我们在DEBIAN目录下创建名为postrm的文件,内容如下:

    #!/bin/sh

    rm /usr/share/applications/Test.desktop

    rm /root/Desktop/Test.desktop

    主要工作就是删除postinst创建的2个文件。

    7. 使用dpkg命令构建deb包

    对source目录下所有文件打包,在output目录下生成deb包。

    cd /TestSetup/source

    dpkg -b . /TestSetup/output/test_amd64_0.1.0.deb

    打包结果:

    0e3b8e5d2c86ec70153ba9fab28f5012.png

    三、deb包的安装与卸载

    1. 安装

    安装deb包命令如下:

    cd /TestSetup/output

    sudo dpkg -i test_amd64_0.1.0.deb

    安装完成,桌面效果:

    9c98fceec0d33f73f3757a869b1f644e.png

    开始菜单效果:

    644f53f45d598e8bdd925a6474cde232.png

    安装路径效果:

    66346722ecc4357e189c48f85b5188e2.png

    2. 卸载

    卸载时,使用control文件中的包名。

    sudo apt-get remove mytest

    卸载之后,安装路径下文件全部删除,自动删除桌面快捷方式和菜单项。

    若应用生成一些log文件,因不在打包文件中,故不会自动删除,

    则需要在postrm文件中添加删除命令。

    3. 参考链接

    《Ubuntu下的deb打包、安装与卸载》

    《Ubuntu中deb包详解及打包教程》

    《Linux下通过.desktop文件创建桌面程序图标(快捷方式)及文件编写》

    ===================================================

    ===================================================

    业余时间不定期更新一些想法、思考文章,欢迎关注,共同探讨,沉淀技术!

    b1901bc27545efcaca2077a6b11480d0.png

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==            

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    展开全文
  • 银河麒麟arm64 qt打包

    2021-04-02 10:31:19
    qt打包 打包成deb文件
  • 文章目录步骤流程详细说明源码包名有个格式规定配置环境变量dh_make 生成 debian 目录修改 `debian/changelog`修改 `debian/control `修改 `debian/copyright`dh_make 的参数含义dpkg-buildpackage 生成 deb 包...
  • 下面是一个完整的项目发布为deb的shell脚本:
  • 最近在linux平台对qt / qml应用进行打包,并要求放到一个完全没有qt环境的linux系统下去运行,中间的坑真的是一波刚平一波又起
  • QT程序打包deb文件的一个目录结构,放这里用来备忘,前面有打包deb的文章
  • linux开始菜单和启动台显示应用图标 .desktop文件放在/usr/share/applications目录 deepin系列应用开机自启动 $HOME/.config/autostart目录, 仅当前用户生效 /etc/xdg/autostart所有用户生效 ...
  • Ubuntu1604打包QT的程序

    2021-05-13 20:25:02
    Ubuntu下打包QT的程序是比较难受的,没有一键打包的软件,经常会出现段错误或找不到库,核心思想就是找依赖库,将所有依赖库都拷贝出来。但一个依赖库又依赖另一个,往往找不全。像这样,段错误连提示都没有像这样:...
  • Linux Qt deb包制作

    2021-12-16 13:23:55
    前言 Linux系统的软件一般有.deb和.rpm格式的安装包,即Linux系统用的是"Debian Packager"软件包管理器,就可以安装.deb的安装包,下面说的就是.deb的制作。... 制作工具 ...这里制作一个Qt开发软件的deb
  • 本文讲的是linux系统中的程序打包,首先我们创建一个简单的程序,我的程序叫做debtest 然后设置qmake来源,这个直接决定了程序依赖的qt库的位置,如果我们需要指定qt标准库的位置,那么qt环境就需要在那个位置。 ...
  • Ubuntu qt程序打包教程 首先使用QT编译需要打包的工程,编译一个release版本,例如得到一个执行文件test; 在任意目录下创建一个目录test-pack; 在该目录下新建一个copylib.sh文件,目的是用来拷贝执行文件所...
  • PC环境Ubuntu18.04 软件:Qt5.9.9 该文章主要是在实现在Linux环境下将Qt的可执行文件打包deb文件,在无Qt环境配置的Linux系统正常运行
  • Qt版本:5.9.4 工程源码:https://github.com/seer-robotics/SeerTCPTest 操作步骤: 1、用Qt的release模式编译工程文件(SeerTCPTest,即SeerTools,下文统称为SeerTools)。 可点击Qt界面上左侧的【项目】--&...
  • 在成熟的QT商业产品中,肯定是不可能通过IDE编译代码然后进行打包的。这个过程必然需要实现自动化的,这里介绍一下QT程序的自动化编译和打包的方法。QT程序在不同的平台下构建和打包的方法不同,这里主要介绍在...
  • Ubuntu环境下Qt软件deb包制作

    千次阅读 2015-06-03 10:07:53
    一、deb软件包简介 二、deb软件包制作
  • 1. 调整Qt项目 下面是一个可以构建deb包的完整目录结构,其中build和debian目录是后续操作自动生成的。建议调整下,把代码放在src目录中,项目根目录下保留pro文件。data目录中保存的是deb包的desktop文件和desktop...
  • pyqt5程序打包deb 参考:packaging-pyqt5-applications-linux-pyinstaller pyinstaller打包成可执行文件 pyinstaller --name myApp formMain.py 会生成一个myApp.spec 文件,可以在文件中修改打包配置 修改配置...
  • Qt程序打deb安装包

    千次阅读 2013-12-17 14:04:21
    Qt程序打deb安装包 --- http://blog.csdn.net/brave_heart_lxl/article/details/6303954 如何发布基于Maemo5的Qt程序(打包.deb格式) --- http://qt.csdn.net/articles.aspx?pointid=566
  • 切换工程文件到release工程下面,然后编译。 找到模式下的文件夹,一般会自动生成在创建工程的同目录下面。 修改exe图标信息。图标的图片信息需要为.ico作为结尾。把图标加入到原始的工程文件目录下面。...
  • 查资料了解到,在windows上有windowsdeployqt程序,linux上有linuxdeployqt可以帮助我们快速打包。1. 配置Qt环境首先,我们先把Qt环境配置好,在~/.bashrc中加入:export PATH=/home/xl/Qt5.9.2/5.9.2/gcc_64/bin:$...
  • 这篇只是记录一下,关于Qt Quick程序某些情况下打包会遇到的坑。 当然,也包括一般Qt程序打包的方法。 【正文开始】 在windows平台,Qt使用【windeployqt.exe】来进行打包。 因为我使用MinGW,所以它位于 mingw...
  • linux的程序打包deb

    千次阅读 2018-02-07 10:12:35
    deb安装包 deb是Unix系统(其实主要是Linux)下的安装包,基于 tar 包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。 由于 Unix 类系统对权限、所有者、组的严格要求,而 deb 格式安装包又经常会涉及...
  • QT程序打包部署教程

    2020-11-13 11:25:03
    QT程序打包部署教程 ​ 本文讲述如何把deepin系统下开发qt程序打包并部署到测试环境中,测试环境如deepin,ubuntu。 1、开发环境 ​ 开发系统:deepin V20版本 ​ 开发工具:qt5.14.2,IDE->QtCreator ​ 编译生成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,341
精华内容 536
关键字:

QT打包deb