[Qt]-打包程序为Debian的deb格式的安装包
参考:https://segmentfault.com/a/1190000005029385
参考:UnityLaunchersAndDesktopFiles
deb是Debian Linux的软件包格式。一般来说是需要通过编译源码然后制作deb包。
但是,为了快速方便,下面直接在程序打包的基础上来进行deb包的封装。
步骤如下:
先完成程序的打包
先把程序打包完成。
创建需要的目录结构和文件
首先建立一个工作目录,比如在主文件夹下建立YouAppName目录:
$ cd ~
$ mkdir YouAppName
$ cd YouAppName
deb文件在安装的时候默认是将文件释放到Linux系统的根目录下,即/
如果我们这里设定安装路径为/opt,那么就安装到opt下。
操作如下:
mkdir -p opt
# 把之前打包好的cp到设置目录结构的opt下
cp -a YouAppName/opt/
我们创建一个opt目录,这样安装的时候就可以安装到系统的/opt下面去了。你创建什么目录,它安装到哪里去(前提得是Linux系统下的标准目录。)
同时我们还需建立一个DEBIAN目录,需要在DEBIAN目录下创建一个control文件,并加入以下内容:
package: YouAppName
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Depends:
Maintainer: you email or inc
Description: YouAppName-deb
desktop
[Desktop Entry]
Version=1.0 #app的版本
Name=YouAppName #app的名字
Comment= this app use for test #说明信息
Exec=/opt/YouAppName/YouAppName.sh #app的执行路径,请使用绝对路径
Icon=/opt/YouAppName/lib/YouAppName.png #icon 路径,请使用绝对路径
Terminal=false #是否在终端启动
Type=Application
Categories=Utility;Application;
大概的项目结构(非debian标准)
注: 请根据实际情况灵活配置目录,请参考下面我组织的结构
// TODO 后面有空补充完善
└── YouAppName #目录
├── opt #目录
│ ├── YouAppName #目录 自己应用程序的名字
│ |── YouAppName # 程序或文件 Qt生成的或其它可运行程序
| |—— YouAppName.sh #程序的启动脚本。
| |—— 项目封装的so或者第三方的so文件和可执行文件放在同一层级(只是建议)
│ |── lib #目录 Qt相关的的so文件
| |—— plugins #目录 Qt的插件
│ ├── YouAppName.desktop
│ ├── YouAppName.png
│ ├── ...等等文件
│
└── DEBIAN #目录 名字确定
├── control #控制文件 名字不可改,必须有这个文件
├── postinst #脚本文件 名字不可改,运行sudo dpkg -i xx.deb命令时,会运行这个脚本. 非必须文件
├── postrm #脚本文件 名字不可改,运行sudo dpkg -r app 命令时,会运行这个脚本 .非必须文件
封装为debian系的deb安装包命令
sudo dpkg -b YouAppName/ YouAppName_V1.0_amd64.deb
安装,卸载debian包
// 注: 需要写软件的名字,tab并不能补全
sudo dpkg -i xxx.deb 安装deb包
sudo dpkg -r xxx 卸载
sudo dpkg -P xxx 卸载(并且删除配置文件)(推荐使用这个,卸载的干净)
注意事项
给desktop文件添加执行权限(非必须,但是建议)
chmod 755 YouAppName.desktop
指定desktop文件
不过xxx.desktop 的写法要一个限制:包含“Exec”那一行,“=”和要执行的程序之间要留一个空格。也就是Exec=XXX是无法通过“sh xxx.desktop”执行,正确的是Exec= XXX。
[Qt]-打包程序为Debian的deb格式的安装包的更多相关文章
- Win10离线安装.NET Framework 3.5的方法补充(附cab格式离线安装包下载) - 转载
MS酋长很早以前已经分享了<Win10离线安装.NET Framework 3.5的方法技巧>,同时分享了exe格式的.NET Framework 3.5离线安装包下载地址.但有部分网友反 ...
- Linux中软件安装包的格式
一.Linux常用安装包及安装方法 1.安装包一般有四类: 1)tar包,如software-1.2.3-1.tar.gz.他是使用UNIX系统的打包工具tar打包的. 2)rpm包,如softwar ...
- iOS开发——程序员必备&iOS安装包的三种格式 deb、ipa 和 pxl的解释和说明
iOS安装包的三种格式 deb.ipa 和 pxl的解释和说明 目前 iOS 平台上常见的安装包有三种,deb.ipa 和 pxl.转自链接:http://fanlb.blogbus.com/logs ...
- iOS 平台上常见的安装包有三种,deb、ipa 和 pxl
前言:目前 iOS 平台上常见的安装包有三种,deb.ipa 和 pxl. 其中 deb 格式是 Debian 系统(包含 Debian 和 Ubuntu )专属安装包格式,配合 APT 软件管理系统 ...
- Inno Setup制作应用程序安装包
我最近写了一个MFC应用程序,想发给其他的小伙伴玩一玩,直接发了个exe文件过去,结果发现小伙伴那边打不开.原来这个exe文件虽然是MFC静态编译的,但是还依赖了其他几个.dll文件,需要把这几个dl ...
- AppImage格式安装包使用
AppImage(以及前身klik和portablelinuxapps)不会安装传统意义上的软件(即它不会将文件放在系统中的所有位置). 它每个应用程序使用一个文件.每个都是自包含的:它包括应用程序所 ...
- NSIS打包(二)第一个安装包
基本介绍完之后,我们大概了解了NSIS中有哪些组件,现在我们通过一个简单的demo来学习如何使用这些组件. 1.环境配置 NSIS的环境非常简单,只有一个安装包,安装后即可使用. 官网:http:// ...
- [程序安装包制作] Advanced Installer 备忘
原文:[程序安装包制作] Advanced Installer 备忘 Product Information - Product Details 这个重点是Product Version.讲这个之前, ...
- Qt之程序发布以及打包成exe安装包
一.简述 Qt项目开发完成之后,需要打包发布程序,而因为用户电脑上没有Qt配置环境,所以需要将release生成的exe文件和所依赖的dll文件复制到一个文件夹中,然后再用 Inno Setup打包工 ...
随机推荐
- cmodel模拟器开发
cmodel模拟器开发 对于一个公司来说,产品的设计周期就是生命线,一般来说都会在设计功能级仿真的c-model后直接转向RTL设计. 在目前的技术下,做cycle-by-cycle的设计和直接RTL ...
- BTC芯片介绍
BTC芯片介绍 Innosilicon宣布全球第一和最佳的28nm比特币ASIC和参考矿机 A1Craft(也称为A1)是2013年世界上最好的BTC ASIC,这是比特币区块哈希算法的易于使用,定制 ...
- Docker Buildx插件
Docker Buildx插件 Overview Docker Buildx是一个CLI插件,它扩展了Docker命令,完全支持Moby BuildKit builder toolkit提供的功能.它 ...
- 用java实现图书管理系统。
图书管理系统. 一.项目设计到的知识 1.MVC设计模式思想(分包) >项目分包 >MVC简单介绍 2.GUI(图形化界面) 3.JDBC连接MySql数据库 4.I/O流 5.面向对象思 ...
- Java线程池底层源码分享和相关面试题(持续更新)
线程池各个参数讲解 public ThreadPoolExecutor(int corePoolSize, //线程池核心工作线程数量,比如newFixedThreadPool中可以自定义的线程数量就 ...
- Redis 入门权威指北
前言 看看业务遇到了什么问题? 我们要从互联网架构的演变之路开始说起Redis的前世今生. 在我们小的时候,网络世界好像就是只有通过大屁股台式机才能进入一样,彼时的手机只是用来打打电话,发发短信,网上 ...
- 【NX二次开发】Block UI 选择单元
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- 《CNN Image Retrieval in PyTorch: Training and evaluati-ng CNNs for Image Retrieval in PyTorch》代码思路解读
这是一个基于微调卷积神经网络的图像检索的代码实现,这里我就基于代码做一个实现思路的个人解读,如果有不对的地方或者不够详细的地方,欢迎大家指出. 代码的GitHub地址:filipradenovic/c ...
- 懒人 IDEA 插件推荐:EasyCode 一键帮你生成所需代码
Easycode是idea的一个插件,可以直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码,简单而强大. 1.安装(EasyCode) 我这里的 ...
- 大家看看大佬对Maven仓库的讲解,有何高明之处?
Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库.(仓库就是存放依赖和插件的地方). 分类 maven的仓库只有两大类:1.本地仓库 2.远程仓库,在远程仓库中又分 ...