环境:Ubuntu 18.04/16.04  Qt:5.12.6

一 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

$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名字)

参考资料:https://segmentfault.com/a/1190000005029385

二 安装以后可能遇到的问题

1.  有ubuntu有Qt环境debà无Qt环境上 报错缺少xcb等

解决过程:

1 在运行目录下添加platform文件夹(来自QT的安装路径的lib目录下)。

2 将libQt5DBus.so、libQt5DBus.so.5、libQt5XcbQpa.so、libQt5XcbQpa.so.5这四个库拷到执行目录下。

3 如果还不能执行,调试时,有一个技巧,打开插件调试配置

export QT_DEBUG_PLUGINS=1

4 再次执行脚本文件DC520.sh 会有详细的报错。会有缺失库的相关信息 提示缺哪个就拷哪个。

参考资料:https://blog.csdn.net/qq21497936/article/details/85396652

https://blog.csdn.net/sinat_26106275/article/details/82778951?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-2&spm=1001.2101.3001.4242

三 软件开机自启动

方法1:将DC520.desktop复制到/etc/xdg/autostart

参考资料:https://blog.csdn.net/zilanpotou182/article/details/71173361

四 以管理员权限登录并跳过输入密码

1 以管理员身份登录

1)下载gksu插件 sudo apt-get install gksu

2)在desktop文件中执行语句前添加 gksu 关键字

2 跳过输入密码

1)使用sudo gedit /etc/sudoers编辑该文件

2)将%sudo ALL=(ALL:ALL) ALL 屏蔽

修改为:%sudo ALL=(ALL:ALL) NOPASSWD: ALL

linux软件deb打包及开机管理员自启动的更多相关文章

  1. linux下Oracle数据库实例开机自启动设置

    linux下数据库实例开机自启动设置 1.改动/oratab [root@org54 ~]# vi/etc/oratab     --把N改为Y,例如以下提示 # This file is used ...

  2. Linux系统如何设置开机程序自启动

    在Linux系统如何让程序开机时自动启动      核心提示:系统的服务在开机时一般都可以自动启动,那在linux系统下如果想要程序在开机时自动启动怎么办?我们知道在 windows系统“开始”--& ...

  3. Linux下的应用程序开机自启动

    Linux下的应用程序开机自启动,目前我知道的有2种: 1.将启动语句写到/etc/rc.local 2.在init.d放置启动脚本 第一种,很简单,直接写进去就行,比如说: /db/mongodb/ ...

  4. linux系统下tomcat应用开机自启动 配置

    linux系统下tomcat应用开机自启动 配置 相对简单的方式是将tomcat添加为系统服务第一步  复制文件将 $Tomcat_Home/bin目录下的 catalina.sh脚本文件复制到目录/ ...

  5. Linux软件管理器(如何使用软件管理器来管理软件)2---安装及管理Linux应用程序

    安装及管理Linux应用程序 Linux应用程序的组成1.普通的可执行程序文件,一般保存在/usr/bin目录中,普通用户即可执行.2.服务器程序.管理程序文件,一般保存在/usr/sbin目录中,需 ...

  6. Linux软件安装与卸载

    一. 了解Linux应用软件安装包: 通常Linux应用软件的安装包有三种: 1) tar包,如software-1.2.3-1.tar.gz.它是使用UNIX系统的打包工具tar打包的. 2) rp ...

  7. 分享几种Linux软件的安装方法

    Linux软件安装由于不同的Linux分支,安装方法也互不相同,介绍几种常见的安装方法. 1. 源码安装,     对于本身具有开源血统的Linux系统来说,几乎所有的开源软件都支持在Linux平台运 ...

  8. linux软件管理(六)

    [教程主题]:linux软件管理 [1]软件包管理 在系统管理中,软件包的管理是最重要的,是系统管理的基础的基础, 只有我们学会软件包的管理才能谈得上其它的应用. RPM RPM是软件管理程序,提供软 ...

  9. 第五部分 linux 软件安装RPM SRPM与YUM

    第五部分  linux  软件安装RPM    SRPM与YUM   软件管理员简介 RPM与DPKG两大主流 rpm: redhat       centos     suse    命令:yum ...

随机推荐

  1. Tomcat基本原理

    思考 :怎样让Tomcat具备Web服务的功能呢? 在服务端用HTTP来监听,协议不好写,不妨用Java封装好的Socket作为监听. class MyTomcat{ ServerSocket ser ...

  2. sdut2878 环形依赖的DP(高斯消元,剪枝后的模板

    这题的状态是循环依赖的有环.. 之前一道概率DP,类似有环..但是它是可以消掉的 比如dp[i]=0.3*dp[i+1]+0.2*dp[i+2]+0.5*dp[i]; 完全可以变成,0.5*dp[i] ...

  3. 记一次getshell

    水文涉及的知识点: Oday的挖掘 可以执行命令,但是有WAF , 命令执行的绕过 机器不出网,无法反弹 Echo写文件,发现只要写入php文件,后缀就重名为*,如1.php 变成1.* 通过上传 l ...

  4. 记一次 Billu_b0x渗透

    目录: 0x01 寻找ip 1.这边我们是使用的nmap来寻找我们的靶机IP地址,开始Ip是1,结束是254,153是我kali的ip,所以158就是我们的靶机的ip地址了. 2. 查看端口服务 这边 ...

  5. QUIC协议和HTTP3.0技术研究

    QUIC:基于UDP的安全可靠的HTTP/2传输协议 摘要 QUIC(Quick UDP Internet Connection)是一个新的基于UDP的管线化技术和安全传输协议. QUIC提供: 和H ...

  6. Apple iOS 触控按钮 自动关闭 bug

    Apple iOS 触控按钮 自动关闭 bug bug 轻点 iPhone 背面可执行操作 您可以轻点两下或轻点三下 iPhone 背面以执行某些操作,如向上或向下滚动.截屏.打开"控制中心 ...

  7. vue & this.$route & this.$router

    vue & this.\(route & this.\)router const User = { template: '<div>User</div>' } ...

  8. 一个汉字在php中占几个字节?

    问:一个汉字在php中占几个字节? 答: 对于中文字符,若使用 GBK.Big-5 版本,每个中文字符相当于 2 个字节: 若使用 UTF-8 版本,每个中文字符相当于 3 个字节.

  9. js array contains All In One

    js array contains All In One includes & contains & has Array.prototype.contains "use st ...

  10. 前端 vs 后端

    前端 vs 后端 前端与后端: 有什么区别? 前端和后端是计算机行业中最常用的两个术语. 在某种程度上,它们成了流行语. 它们决定了您作为软件开发人员所从事的工作类型,所使用的技术以及所获得的收入. ...