懒人笔记-QT程序UOS打包篇

news2024/10/9 23:03:45

懒人笔记-uos打包篇

  • 前言
  • 1、deploy
  • 2、组织打包目录
    • 2.1 控制文件
      • 2.1.1 control的内容:
      • 2.1.2 postinst的内容:
      • 2.1.3 postrm的内容:
    • 2.2 执行程序
    • 2.3 开机自启(可选项)
  • 3、输出deb安装包
  • 4、服务卸载
    • 4.1 服务卸载
    • 4.2 程序按照和卸载

前言

项目有好几个程序,之前在麒麟和UOS都捣鼓了下,打包没有细细研究,就用了一堆命令进行交付,结果可想而知,大米的教训!现在有时间,一堆百度配合实操,终于可以一键安装了,记录下过程,免得年纪大了回头就忘记。

1、deploy

下载源码包https://github.com/probonopd/linuxdeployqt/releases
linuxdeployqt-continuous.tar.gz ,用QT打开进行编译。这步网上很多,我也没有仔细去研究,按照网上的进行了代码屏蔽在这里插入图片描述
将linuxdeployqt拷贝到/usr/local/bin目录里
运行命令:linuxdeployqt --version,有输出说明可以直接用了

2、组织打包目录

打包目录分为2大类,一类是控制文件,用来安装过程中执行一些命令,比如权限授权、复制拷贝等,另外一类就是我们编译出来的UI程序,以及相应的依赖库。
source(这个随便改)
├── DEBIAN
│ └── control
│ └── postinst (安装好了会执行)
│ └── postrm (卸载会执行,待验证)
├── opt
└── Test(这个随便改,但是一般我们都是按照工程名称来进行命名的)
├── Test(工程编译出来的程序)
└── xxx(依赖库、配置等等)

2.1 控制文件

网上很多,控制文件就3个:control、postinst、postrm(这3个文件没有后缀)授权 chmod 775 control
chmod 775 postinst
chmod 775 postrm

2.1.1 control的内容:

Package:WebDaemonSvr
Version:3.2.0.0005
Section:utils
Priority:optional
Architecture:amd64 (这个按照自己的机器来,内核)
Depends:
Installed-Size:512
Maintainer: ******
Description:***

2.1.2 postinst的内容:

#!/bin/sh
chmod 777 /etc/xdg/autostart/WebDaemonSvr.desktop

2.1.3 postrm的内容:

#!/bin/sh
if [ -f " /etc/xdg/autostart/WebDaemonSvr.desktop"]; then
rm /etc/xdg/autostart/WebDaemonSvr.desktop
fi

2.2 执行程序

先用deploy查找下应用的依赖项,命令如下:
cd WebDaemonSvr/
linuxdeployqt WebDaemonSvr(自行更换应用名称) -appimage
在这里插入图片描述
再用ldd命令进一步查找依赖项,内容如下:(我这里的文件名为:ldd_***.sh)
#! /bin/bash
EXE=‘WebDaemonSvr’ #我的程序名
PWD=pwd #打包的路径
files=ldd $EXE | awk '{ if(match($3,"^/"))printf("%s "),$3 }'
cp $files $PWD

终端里面执行sudo sh ldd_***.sh

2.3 开机自启(可选项)

这个可有可没有,看自己的需求:
和opt同一级目录创建如下:/etc/xdg/autostart/***.desktop,其实这个路径就是系统的应用自启动路径,将/etc/xdg/autostart目录里的文件拷贝到相应的系统的路径里面(强调下,系统必须要有这个路径,否则相当于自定义路径了,不起作用)
在这里插入图片描述

3、输出deb安装包

cd build_deb/
sudo dpkg-deb -b …/build_deb …/WebDaemon_deb_1.0.0_amd64.deb
这样就完成安装包的制作啦!

重启电脑,就会按照启动项里面 .desktop里面的进行操作了。

4、服务卸载

4.1 服务卸载

由于做成了服务,运行过程卸载的话只能通过手动来卸载服务了,命令如下:
ps -aux |grep Web(Web是我项目前缀,自行修改)
kill -9 进程ID

4.2 程序按照和卸载

除了手动双击.deb包进行按照,也可以通过命令的方式来进行按照,如下:
sudo dpkg -i WebDaemon_deb_1.0.0_amd64.deb
在这里插入图片描述
sudo dpkg -r WebDaemon_deb_1.0.0_amd64 (control文件里面的package内容)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2200295.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信息论笔记

知识点 学习视频链接 信息论简介和概率论复习 信息的定义 信息、信号、消息的概念 香农信息 信息论的研究对象和目的 信源:产生消息和消息序列的源编码器:将消息变为适合信道传输的物理量信道:传输或者储藏信号的媒介译码器&#xf…

mysql事务使用和事务隔离级别与sqlserver的比较

在 MySQL 中,事务 (Transaction) 是一个将一组 SQL 语句作为一个整体执行的机制。事务确保要么所有操作都执行成功,要么在遇到错误时回滚到之前的状态,从而保证数据库数据的一致性和完整性。 事务的四大特性(ACID) 事…

RISC-V笔记——基础

1. 前言 RISC-V旨在支持广泛的定制和专业化。RISC-V的ISA是由一个基本整型ISA和其它对基本ISA的可选扩展组成。每个整型ISA可以使用一个或多个可选的ISA扩展进行扩展。 基本整型ISA精选了最小的一组指令,这些指令足以为编译器、汇编器、链接器和操作系统提供足够的…

iPhone相册怎么删除相同照片

我们都太喜爱用iPhone拍照了,我们的iPhone相册就像是一个永远不想清理的衣柜,堆满了各种美好瞬间和意外的重复照片。面对成百上千的照片,有时候我们不禁想:这些相同的照片到底是怎么混进来的?今天,就让我来…

SpringBoot集成RocketMQ实现六种消息

1. 简介 RocketMQ 支持多种消息类型以满足不同的业务需求 普通消息(Standard Message): 这是最常用的消息类型,适用于大多数场景。 可以设置延迟级别(Delay Levels),但不支持消息轨迹。 顺序消…

C/C++程序员为什么要了解汇编?了解汇编有哪些好处?如何学习汇编?

目录 1、概述 2、从汇编的角度去理解问题的若干实例说明 2.1、使用空指针去访问类的数据成员或调用类的虚函数为什么会引发崩溃? 2.2、从汇编代码的角度去理解多线程的执行细节,去理解多线程在访问共享资源时为什么要加锁 2.3、使用Windbg静态分析d…

【Matlab】Matlab 导入数据.csv或者.xlsx文件,然后使用这些数据来绘制图表

Matlab 导入数据.csv或者.xlsx文件,然后使用这些数据来绘制图表 初始数据 filename C:\Users\jia\Desktop\yadian\data\1Hz 2024_09_12 17_10_06.csv; 代码: clc;clear close all; % 读取Excel文件 filename C:\Users\jia\Desktop\yadian\data\1Hz …

一篇文章让你学懂python入门

1.编写程序输入三个整数,按升序输出 思路1:使用if-else结构进行大小比较,将三个数进行从小到大的排序 num1 int(input("请输入第一个整数:")) num2 int(input("请输入第二个整数:")) num3 int(input(&qu…

华为OD机试 - 采样过滤(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

MySQL数据的增删改查

CRUD CRUD指的是创建(Create),读取(Retrieve),更新(Update)和删除(Delete),它是数据库或者持久层在软件系统中执行的基本功能,构成了大多数应用程序和服务器…

图神经网络之异构图转同构图

heterogeneous graph转homogeneous 异构图创建教程dgl.to_homogeneous语法格式例子 异构图创建教程 对于异构图创建,可以看异构图创建教程 dgl.to_homogeneous语法格式 dgl.to_homogeneous(G, ndataNone, edataNone, store_typeTrue, return_countFalse)G&#x…

K8s简介及环境搭建

一、Kubernetes简介 kubernetes 的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能: 自我修复:一旦某一个容器崩溃&a…

使用HashiCorp Nomad Cluster App管理高可用集群

容器化和Kubernetes如今已成为创建可扩展云原生应用程序的基本要素。但并非每个应用程序工作负载都需要容器或Kubernetes资源。HashiCorp Nomad是一个轻量级的工作负载调度程序,提供了与Kubernetes相似的优势,但不仅可以管理容器,还能管理其他…

SSL证书是否可以给多个域名使用?

在当今数字化的网络环境中,SSL证书在保障网站安全、保护用户数据传输方面发挥着至关重要的作用。那么,SSL 证书是否可以给多个域名使用呢?这是一个在网站开发、运营和安全管理领域备受关注的问题。 SSL 证书能够给多个域名使用吗&#xff1f…

指针函数C++

指针函数概念 指针函数在C中是一种特殊类型的函数。从本质上讲,它是一个函数,不过其返回值是一个指针类型的数据。例如,像int* plusfunction(int a, int b);这样的函数声明,plusfunction就是一个指针函数,它接受两个i…

Jvisualvm介绍;使用Jvisualvm:运行jvisualvm.exe;安装gc插件;查看gc

一,Jvisualvm介绍 jvisualvm是用来查看硬件使用情况的工具,多数会用它来看内存的使用情况 VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe)&#xff0c…

leetcode 10.9 94.二叉树的中序遍历

94. 二叉树的中序遍历 已解答 简单 相关标签 相关企业 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2]示例 2: 输入:root [] 输出&#xff1a…

LabelImag标注工具环境配置

LabelImag标注工具环境配置 Anaconda的安装和使用 Anaconda是一个集成了Python解释器、conda包管理器和众多科学计算、数据分析、机器学习等常用库的发行版。它允许用户轻松地管理Python环境和包,无需手动解决依赖问题。Anaconda特别适用于数据科学、机器学习、人…

Mac 下编译 libaom 源码教程

AV1 AV1是一种开放、免版税的视频编码格式,由开放媒体联盟(AOMedia)开发,旨在提供高压缩效率和优秀的视频质量。AV1支持多种分辨率,包括SD、HD、4K和8K,并适用于视频点播(VOD)、直播…

Python酷库之旅-第三方库Pandas(139)

目录 一、用法精讲 626、pandas.plotting.scatter_matrix方法 626-1、语法 626-2、参数 626-3、功能 626-4、返回值 626-5、说明 626-6、用法 626-6-1、数据准备 626-6-2、代码示例 626-6-3、结果输出 627、pandas.plotting.table方法 627-1、语法 627-2、参数 …