qt通过编写spec打包成rpm
qt通过编写spec打包成rpm
一、将源文件打包成rpm安装包
1、新建名为rpmbuild的文件夹,里面包含子目录BUILD,RPMS,SOURCES,SPECS,SRPMS
命令:
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
文件夹存放:
目录名 | 说明 | macros中的宏名 |
---|---|---|
BUILD | 编译rpm包的临时目录;存放解压的源文件 | %_builddir |
BUILDROOT | 编译后生成的软件临时安装目录存放;存放qmake、make编译生成的文件 | %_buildrootdir |
RPMS | 最终生成的可安装rpm包的所在目录;二进制文件(执行yum安装或者rpm -ivh安装命令) | %_rpmdir |
SOURCES | 所有源代码和补丁文件的存放目录存放源文件的源代码的压缩包和补丁 | %_sourcedir |
SPECS | 存放SPEC文件的目录(重要) | %_specdir |
SRPMS | 软件最终的rpm源码格式存放路径 | %_srcrpmdir |
2、将qt项目源代码压缩,将压缩文件保存到SOURCES中
3、在SPECS文件中新建spec格式的文件夹
4、编写spec
阶段 | 读取的目录 | 写入的目录 | 具体动作 |
---|---|---|---|
%prep | %_sourcedir | %_builddir |
读取位于 %_sourcedir 目录的源代码和 patch 。之后,解压源代码至 %_builddir 的子目录并应用所有 patch。
|
%build | %_builddir | %_builddir |
编译位于 %_builddir 构建目录下的文件。通过执行类似 ./configure && make 的命令实现。 qmake make
|
%install | %_builddir | %_buildrootdir |
读取位于 %_builddir 构建目录下的文件并将其安装至 %_buildrootdir 目录。这些文件就是用户安装 RPM 后,最终得到的文件。注意一个奇怪的地方: 最终安装目录 不是 构建目录。通过执行类似 make install 的命令实现。 install
|
%check | %_builddir | %_builddir |
检查软件是否正常运行。通过执行类似 make test 的命令实现。很多软件包都不需要此步。
|
bin | %_buildrootdir | %_rpmdir |
读取位于 %_buildrootdir 最终安装目录下的文件,以便最终在 %_rpmdir 目录下创建 RPM 包。在该目录下,不同架构的 RPM 包会分别保存至不同子目录, noarch 目录保存适用于所有架构的 RPM 包。这些 RPM 文件就是用户最终安装的 RPM 包。
|
src | %_sourcedir | %_srcrpmdir |
创建源码 RPM 包(简称 SRPM,以.src.rpm 作为后缀名),并保存至 %_srcrpmdir 目录。SRPM 包通常用于审核和升级软件包。
|
prep
这个阶段主要完成对源代码包的解压和补丁
注意,源代码包必须是name-version.tar.gz的格式才行(需要改一下源代码包和压缩包的名字)
```#setup解压命令%setup 不加任何选项,仅将软件包打开。 %setup -n newdir 将软件包解压在newdir目录。 %setup -c 解压缩之前先产生目录。 %setup -b num 将第num个source文件解压缩。 %setup -T 不使用default的解压缩操作。 %setup -T -b 0 将第0个源代码文件解压缩。 %setup -c -n newdir 指定目录名称newdir,并在此目录产生rpm套件
build:
先进行qmake,然后make
qmake 后面的路径为build文件中源文件中的.pro文件
qmake %_builddir/YL_project1.6_Loongnix-0.1/YL_project.pro
build的文件路径
make 保留原来
make %{?_smp_mflags}
inatall
make install
make install DESTDIR=%{buildroot}
mkdir -p %{buildroot}/usr/local/bin
install -m 0755 %_builddir/YL_project/YL_project %{buildroot}/usr/local/bin/YL_project
install 安装make编译生成的YL_project文件安装到指定文件夹中
5、打包
rpmbuild -ba ***/***.spec
执行成功后,二进制RPM包在RPMS文件中,RPM源码包在SRPMS中
6、安装
rpm -ivh ~/***/***/***.rpm
#或者
yum install ***.rpm
安装后的可执行程序在/usr/local/bin目录下。
二、创建桌面快捷方式
.desktop是用来运行程序的快捷方式,创建了.desktop文件后,编写内容,修改权限,若双击可以成功启动程序,就说明创建成功。
1、编写shell脚本,通过重定向,通过建立.desktop文件来创建桌面快捷方式,在安装后生成桌面快捷方式。
在源文件目录中新建***.sh脚本文件
2、桌面快捷方式需要安装生成的exe文件,所以要在.spec文件中编写,在安装好后执行shell脚本
spec阶段:
阶段 | |
---|---|
%pre | rpm安装前执行的脚本 |
%post | rpm安装后执行的脚本 |
%preun | rpm卸载前的脚本 |
%postun | rpm卸载后的脚本 |
完成!
在rpmbuild\RPMS\mips64el目录下,执行
卸载之前的软件
yum remove
rpm -ivh ***.rpm
#或者
yum install ***.rpm
在usr/local/bin下
桌面:
qt通过编写spec打包成rpm相关推荐
- 将源码包打包成RPM包
RPM 1,描述信息 2,对源码安装后的数据压缩rpm 应用的场景 打包流程 安装rpm-build软件 #yum -y install rpm-build #rpmbuild -ba nginx.s ...
- Jenkins系列:5、wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe
Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成exe 文章目录 Jenkins系列:5.wsl下的Jenkins编译Windows下的Qt程序并自动打包成e ...
- Linux入门——如何制作一个刷取网页访问量的脚本并打包成rpm软件包(CentOS)
Linux入门之如何利用rpm命令创建完整的rpm文件 概述 rpm命令 rpm包制作流程 写目标脚本 rpm制作前的准备工作 软件准备 脚本编译 rpm软件包制作 概述 在Linux下进行脚本开发, ...
- 内核源码包打包成rpm方式
内核源码包打包成rpm方式 文章目录 内核源码包打包成rpm方式 第一部分,rpm包简单定制 一.rpm 制作前的环境准备 二.准备内核的源代码组件 1.下载地址 https://www.kernel ...
- 简单的将linux二进制程序、资源打包成rpm
需求 之前发布.实施软件或者产品的时候,更多的是以脚本+tar压缩包的形式,或者直接集成一个ELF程序来进行发布. 现在想简单的把可执行程序.依赖动态度和资源打到一个rpm包中,通过rpm -ivh方 ...
- 将二进制文件或者脚本打包成rpm安装包
现有二进制文件test.jar和start.sh需要安装至系统(centos)的/opt/demo/目录下,想要打成rpm包,实现一键安装 1.下载工具rpmbuild yum install rpm ...
- Qt之程序发布以及打包成exe安装包
一.简述 Qt项目开发完成之后,需要打包发布程序,而因为用户电脑上没有Qt配置环境,所以需要将release生成的exe文件和所依赖的dll文件复制到一个文件夹中,然后再用 Inno Setup打包工 ...
- 12.QT + OpenCV打包成应用(以及QT图标问题详细) --- OpenCV从零开始到图像(人脸 + 物体)识别系列
本文作者:小嗷 微信公众号:aoxiaoji 关键词:QT + OpenCV打包成应用(接着第11篇) QT开发的程序发布的时候经常采用两种方式: 静态编译,可生成单一的可执行文件. 动态编译,需同时 ...
- Qt打包成setup.exe安装包
Qt打包成setup.exe安装包 一.简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复 ...
最新文章
- python学习-day2_课堂作业
- 2017年重要数据安全事件解读
- 键桥通讯布局大数据 9.45亿入股上海即富
- EasyDarwin开源音频解码项目EasyAudioDecoder:EasyPlayer Android音频解码库(第二部分,封装解码器接口)...
- MapReduce-流量统计求和-FlowBean和Mapper代码编写
- 开发自己的框架——(二)数据库工具类的封装
- mysql终端_MySQL之终端(Terminal)管理MySQL
- mysql主从架构升级_实战项目——mysql主从架构的实现
- pandas查看两个series、list元素的包含关系(查看一个series的每个元素是否在另一个series中)
- vim 删除当前词_vim 可视话模式(即删除一列和多列)
- XMLHttpRequestEventTarget
- 拦截Response.Redirect的跳转并转换为Js的跳转
- ta-lib 里的蜡烛图形态函数源码
- python astype category_python类别比较型图表柱形图系列堆积柱形图系列
- python对txt文件处理_python 数据处理 对txt文件进行数据处理
- Python 3爬虫、数据清洗与可视化实战PDF高清完整版免费下载|百度云盘
- 如何检查python安装成功_如何检查python是否安装成功
- 苦熬31年终于登陆科创板!WPS如何一步步熬到了今天?
- cms三次标记浮动垃圾是如何产生的
- 解密seata全局锁(一)