linux软件deb打包及开机管理员自启动
环境: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
三 软件开机自启动
方法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打包及开机管理员自启动的更多相关文章
- linux下Oracle数据库实例开机自启动设置
linux下数据库实例开机自启动设置 1.改动/oratab [root@org54 ~]# vi/etc/oratab --把N改为Y,例如以下提示 # This file is used ...
- Linux系统如何设置开机程序自启动
在Linux系统如何让程序开机时自动启动 核心提示:系统的服务在开机时一般都可以自动启动,那在linux系统下如果想要程序在开机时自动启动怎么办?我们知道在 windows系统“开始”--& ...
- Linux下的应用程序开机自启动
Linux下的应用程序开机自启动,目前我知道的有2种: 1.将启动语句写到/etc/rc.local 2.在init.d放置启动脚本 第一种,很简单,直接写进去就行,比如说: /db/mongodb/ ...
- linux系统下tomcat应用开机自启动 配置
linux系统下tomcat应用开机自启动 配置 相对简单的方式是将tomcat添加为系统服务第一步 复制文件将 $Tomcat_Home/bin目录下的 catalina.sh脚本文件复制到目录/ ...
- Linux软件管理器(如何使用软件管理器来管理软件)2---安装及管理Linux应用程序
安装及管理Linux应用程序 Linux应用程序的组成1.普通的可执行程序文件,一般保存在/usr/bin目录中,普通用户即可执行.2.服务器程序.管理程序文件,一般保存在/usr/sbin目录中,需 ...
- Linux软件安装与卸载
一. 了解Linux应用软件安装包: 通常Linux应用软件的安装包有三种: 1) tar包,如software-1.2.3-1.tar.gz.它是使用UNIX系统的打包工具tar打包的. 2) rp ...
- 分享几种Linux软件的安装方法
Linux软件安装由于不同的Linux分支,安装方法也互不相同,介绍几种常见的安装方法. 1. 源码安装, 对于本身具有开源血统的Linux系统来说,几乎所有的开源软件都支持在Linux平台运 ...
- linux软件管理(六)
[教程主题]:linux软件管理 [1]软件包管理 在系统管理中,软件包的管理是最重要的,是系统管理的基础的基础, 只有我们学会软件包的管理才能谈得上其它的应用. RPM RPM是软件管理程序,提供软 ...
- 第五部分 linux 软件安装RPM SRPM与YUM
第五部分 linux 软件安装RPM SRPM与YUM 软件管理员简介 RPM与DPKG两大主流 rpm: redhat centos suse 命令:yum ...
随机推荐
- WMI在渗透测试中的重要性
0x01 什么是wmi WMI可以描述为一组管理Windows系统的方法和功能.我们可以把它当作API来与Windows系统进行相互交流.WMI在渗透测试中的价值在于它不需要下载和安装, 因为WMI是 ...
- ARM汇编指令-STMFD/LDMFD
根据调用规则ATPCS,程序一般都使用FD(FullDescending)类型的数据栈(满栈),那么对立的就由空栈类型的数据栈.空栈是指SP操作完后指向的地址空间是未使用的,反之满栈就是SP指向的地址 ...
- Express All In One
Express All In One express.js, node.js web framework # v4.17.1 Latest, on May 26, 2019 $ yarn add ex ...
- docs search & algolia & docsearch
docs search & algolia & docsearch https://www.algolia.com/docsearch https://www.algolia.com/ ...
- Chateau Renice酒庄 :忠于风味,尊重自然
Chateau Renice酒庄(公司编号:20151318780)凭借优良的葡萄栽培传统.卓越的酿酒技术以及独特风味的葡萄酒,近年来葡萄酒畅销至全球. Chateau Renice酒庄将葡萄酒出口至 ...
- NGK内存将为全球投资者创造新的财富增长机会
2020年,随着BTC的持续上涨带动了整个区块链市场的持续加温,同时金融市场也对金融体制做出了改变,关于金融和区块链的结合越来越被人们所认可,在此基础上,DeFi行业借此迎来了快速发展,据不完全统计, ...
- Maven的-pl -am -amd参数
本文转载自Maven的-pl -am -amd参数学习 昨天maven的deploy任务需要只选择单个模块并且把它依赖的模块一起打包,第一时间便想到了-pl参数,然后就开始处理,但是因为之前只看了一下 ...
- 开源OA办公平台搭建教程:O2OA+Arduino实现物联网应用(二)
O2OA平台搭建 O2OA的开发环境非常简单,安装服务器后即可通过浏览器进行开发了和使用.具体可参考文档库中的其他文档,有比较详细的介绍,这里就不再赘述了. Arduino开发发环境搭建 安装Ardu ...
- Python分类模型构建
分离训练集测试集 from sklearn.model_selection import train_test_split eg: X_train, X_test, y_train, y_test = ...
- C++教程01:计算机系统的组成
教程首发 | 公众号:lunvey 学习C++之前,需要先了解一点基础的计算机知识.毕竟C++是跑在计算机系统上的,我们写的程序都是一段段的指令集. 首台计算机ENIAC问世之后,缺少原理指导.冯诺依 ...