Ubuntu Qt软件deb打包 及 去除图形界面自启动

Ubuntu打包deb文件

1.建立目录结构

 

 

 

2.目录内容

1) 子目录DC520:

 

 

 

Get以上内容步骤:

(1)  创建目录DC520(自己软件的名字,可变),将Qt release编译生成的DC520可执行文件放在该软件包中。

(2) 生成依赖库,创建pack.sh文件 命令:touch pack.sh

内容:

#!/bin/sh

exe="DC520"

destDir=`pwd`

dependenlibList=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3} }')

cp $dependenlibList $destDir

执行pack.sh 生成依赖库

(3) 可以将自己软件需要的配置文件等也放入上面文件夹。

(4) 创建DC520.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

QML2_IMPORT_PATH=$dirname/qml

export QML2_IMPORT_PATH

QT_PLUGIN_PATH=$dirname/plugins

export QT_PLUGIN_PATH

$dirname/$appname "$@"

2) lib目录

 

(1)DC520.desktop

[Desktop Entry]

Version=0.1 #应用程序版本

Name=DC520 #程序名

Comment=create by  Charles#注解

Exec=/usr/bin/DC520/DC520.sh#执行路径

Keywords=google,DC520,dc520#搜索关键字

StartupNotify=false

Terminal=false

Type=Application

Categories=Utility;Application;System;Archiving;

Hidden=false

Icon=/usr/share/pixmaps/DC520.png#图标

(2) 图标

放自己的图标

3) DEBIAN目录

 

 

 

(1)control文件内容

Package:DC520

Version:0.1

Section:utils

Priority:extra

Maintainer:Charles

Depends: #空 因为库已经在DC520里面了

Architecture:amd64

Description:the software is an opensource package from DAKEWE

(2)postinst文件内容

创建命令:touch postinst && chmod 755 postinst

echo "Start to install"

mv -f /application/lib/DC520.desktop /usr/share/applications/

mv -f /application/lib/DC520.png /usr/share/pixmaps/

mv -f /application/DC520/* /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"

(3)postrm文件内容

创建命令:touch postrm&& chmod 755 postrm

echo "Start to remove"

rm -rf /usr/share/applications/DC520.desktop

rm -rf /usr/share/pixmaps/DC520.png

rm -rf /usr/bin/DC520

echo "Remove finished"

3 打包命令

打包命令:sudo dpkg -b mydeb/ DC520_0.1_amd64.deb (文件名自定义)

安装命令:sudo dpkg -i DC520_0.1_amd64.deb

卸载命令:sudo dpkg -r DC520(app名字)

4找库

(打包到没有环境的系统上会报错,跑不起来,这个坑里爬了很久)

1报错缺少xcb等

解决过程:

.QT安装路径下将qml plugins整个目录拷到执行目录

.将软键盘的配置拷进来

.再报缺什么文件就拷什么文件

.环境变量:

export QML2_IMPORT_PATH=$dirname/qml

export QT_PLUGIN_PATH=$dirname/plugins

 

 

 

 

 

Ubuntu去除图形界面开机自启动

1.开机自启动执行文件rc.local

rc.local内容:

#!/bin/sh

#以下一行是你要执行的程序

/usr/bin/DC520/startupDC520.sh

exit 0

创建命令:touch rc.local

将文件拷贝到/etc下 命令:sudo cp -r ./rc.local /etc

记得加可执行权限 命令:sudo chmod +x /etc/rc.local

2. 去除Ubuntu系统图形界面脚本

文件setupstartupcommand.sh (文件名自定义) 手动执行

内容:    

#!/bin/sh

CFG=/etc/default/grub   #need config file

K=GRUB_CMDLINE_LINUX_DEFAULT    #key word

V="text"        #new value

sed -i "/^$K/c\

                $K=\"$V\"" $CFG #must be a new line

update-grub

systemctl set-default multi-user.target

3.配置脚本

文件setupstartupDC520.sh(文件名自定义) 手动执行

内容:

#!/bin/sh

cp -r ./rc.local /etc

chmod +x /etc/rc.local

chmod +x /usr/bin/DC520/startupDC520.sh 

chmod +x /usr/bin/DC520/DC520.sh

CFG=/etc/rc.local       #need config file

NL="/usr/bin/DC520/startupDC520.sh"

#delete old config about "DC520"

sed -i '/DC520/'d $CFG

#delete old config about "startup.sh"

sed -i "/^exit 0/i\

                $NL" $CFG

4.在没有图形界面被调用的执行脚本

文件:startupDC520.sh(在rc.local中被调用)

内容:

#!/bin/sh

#该脚本用于在没有启动桌面的情况下启动软件

#该脚本一般在/etc/rc.local中调用

lineCount=$(df -h | grep "dkwusb" | wc -l)

if [ $lineCount -eq 0 ]

then

        echo "当前没有挂载U"

        echo "删除dkwusb目录"

        rm /media/dkwusb -rf

else

        echo "当前挂载了U"

fi

#后台启动软件

pulseaudio --start --log-target=syslog

xinit /usr/bin/DC520/DC520.sh -- /usr/bin/X :1 &

 

5.增加Ubuntu系统图形界面脚本

文件:setupstartupdesktop.sh(文件名自定义)  手动执行

内容:

#!/bin/sh

CFG=/etc/default/grub   #need config file

K=GRUB_CMDLINE_LINUX_DEFAULT    #key word

V="quiet splash"        #new value

sed -i "/^$K/c\

                $K=\"$V\"" $CFG #must be a new line

update-grub

systemctl set-default graphical.target

6.接除绑定 

文件:setupstartupnoDC520.sh (文件名自定义)  

内容:

#!/bin/sh

CFG=/etc/rc.local       #need config file

NL="/usr/bin/DC520/startupDC520.sh"

#delete old config about "DC520"

sed -i '/DC520/'d $CFG

#delete old config about "startup.sh"

sed -i '/startupastp/'d $CFG   

posted @ 2021-10-13 17:47  一笔一世界  阅读(578)  评论(0编辑  收藏  举报