rpm打包
文章目录
rpm打包
1. rpm打包步骤
0)准备工作:安装打包工具rpm-build和rpmdevtools
(1)在线安装
yum install rpm-build -y
yum install rpmdevtools -y
[释]: 打包主要用rpm-build,而rpmdevtools工具包里面自带的命令rpmdev-setuptree可以用于快速创建结构目录,比手动创建更快。
[注]: 如果yum下载不了,可参考我的另一篇博文 https://blog.csdn.net/Acegem/article/details/132555841?spm=1001.2014.3001.5501
(2)离线安装
到官网将离线包下载好。
Centos:https://pkgs.org
麒麟V10:https://update.cs2c.com.cn/NS/V10/V10SP1/os/adv/lic/base/aarch64/Packages/
将 rpm-build.rpm 和 rpmdevtools.rpm下载下来后,安装的时候如果报错缺失依赖,看情况可以考虑用命令忽略依赖强制安装:
rpm -ivh rpm-build.rpm --nodeps --force
rpm -ivh rpmdevtools --nodeps --force
1)创建初始化目录
首先要在当前用户的 {$HOME} 下创建目录:rpmbuild,再在该目录下创建目录:BUILD、RPMS、SOURCES、SPECS、SRPMS。
整个过程可以借助 rpmdev-setuptree 快速实现。如下:
cd # 到主目录下
rpmdev-setuptree # 创建初始化目录
结果:

[注]: 默认创建位置是 {$HOME},如果想更改位置,可修改 ~/.rpmmacros 配置。配置默认初始内容:

2)准备打包内容
将要打包的内容放到 ~/rpmbuild/SOURCES 目录下。
例:

3)编写打包脚本 spec文件
cd ~/rpmbuild/SPECS
touch mytool.spec
mytool.spec 内容如下:
Name: mytool # 软件名称
Version: 1.0 # 软件版本
Release: 0%{?dist} # RPM版本,发布序列号,用来标明第几次打包
Summary: MyTool Master installer # 描述
# Group: test # 软件组。建议使用 Application/System
License: GPLv3+ # 协议
AutoReqProv: no # 忽略依赖。简单粗暴,依个人习惯。
# 例:有时rpm -ivh安装时报错某依赖找不到,可能是打包的时候就找不到依赖包。这个语句可以使得忽略依赖关系。功能类似于:rpm -ivh 软件名 --nodepsBuildRoot: %(mktemp -ud %{_tempath}/%{name}-%{version}-%{release}-XXXXXX) # 临时编译目录# 详细描述
%description -l zh_CN
"The mytool for test"# 安装前准备
%prep
echo "do not"# 安装
%install
cd %{_sourcedir} # ~/rpmbuild/SOURCE
cp -ra * %{buildroot} # 将 ~/rpmbuild/SOURCE 下的内容全都复制到 ~/rpmbuild/BUILDROOT# 定义打包文件列表
%files
/usr/local/MQ
/opt/QQ# 卸载后执行的指令
%postun
rm -rf /usr/local/MQ
rm -rf /opt/QQ
附:
spec常用参数
# 自定义宏
%define Name MyTool
%define Version 1.0# 软件包
Name: %{Name} # 引用宏
Version: %{Version} # 引用宏
Release: 1%{?dist} # 引用宏(自带宏)
Summary: 一段软件简概 # 简单描述
License: GPLv3+ # 协议
URL: 地址
buildroot: %{_topdir}/BUILDROOT # 生成车间,即编译根目录。
Source0: %{Name}-%{Version}.tar.gz # 指定源码编译的文件,默认路径:%{_topdir}/SOURCES
SOURCE1: 支持多个
BuildRequires: gcc, make, automake, binutils # 软件依赖信息
Requires: bash >=2.0 # 软件依赖, >= 或 <= 表大于或小于特定版本# 详细描述
%description -l zh_CN # 其中 -l zh_CN是参数,可省略
这是一段软件的详细描述# 安装前。如:执行脚本
%pre
useradd %{Name} -s /sbin/nologin# 安装前。默认将Source目录内源码包解压到BUILD目录,并在其目录下创建 %{Name}-%{Version}目录。
%prep
%setup -q -n %{Name}-%{Version}# 编译
%build
自定义命令# 安装
%install
自定义命令# 文件
%files# 清理制作时产生的缓存
%clean
rm -rf %{buildroot}# 安装后。
%post
自定义命令# 卸载前。
%preun
自定义命令# 卸载后
%postun
自定义命令# 日志
%changelog
自定义命令
代表路径的宏列表
%{_sysconfdir} /etc
%{_prefix} /usr
%{_exec_prefix} %{_prefix}
%{_bindir} %{_exec_prefix}/bin
%{_libdir} %{_exec_prefix}/%{_lib}
%{_libexecdir} %{_exec_prefix}/libexec
%{_sbindir} %{_exec_prefix}/sbin
%{_sharedstatedir} /var/lib
%{_datarootdir} %{_prefix}/share
%{_datadir} %{_datarootdir}
%{_includedir} %{_prefix}/include
%{_infodir} /usr/share/info
%{_mandir} /usr/share/man
%{_localstatedir} /var
%{_initddir} %{_sysconfdir}/rc.d/init.d
%{_var} /var
%{_tmppath} %{_var}/tmp
%{_usr} /usr
%{_usrsrc} %{_usr}/src
%{_lib} lib (lib64 on 64bit multilib systems)
%{_docdir} %{_datadir}/doc
%{buildroot} %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}
$RPM_BUILD_ROOT %{buildroot}
4)打包
cd ~/rpmbuild/SPECS/
rpmbuild -bb mytool.spec
未报错的日志结尾会出现 exit 0,具体信息如下:
此时,会在 ~/rpmbuild/RPMS/ 目录下生成 rpm 包文件。如下:

注: 可输入
rpm -qpl mytool-1.0-0.ky10.ky10.x86_64.rpm
来查看rpm包的内容:

说明包是没问题的。
5)安装
rpm -ivh mytool-1.0-0.ky10.ky10.x86_64.rpm

可看到rpm包中的MQ和QQ被成功安装在了 /usr/local 和 /opt 下。

附:
# 查找软件的安装路径
rpm -ql 软件名
# 查找软件的相关信息
rpm -qi 软件名

相关文章:
rpm打包
文章目录 rpm打包 1. rpm打包步骤0)准备工作:安装打包工具rpm-build和rpmdevtools(1)在线安装(2)离线安装 1)创建初始化目录2)准备打包内容3)编写打包脚本 spec文件4&…...
匠心新品:大彩科技超薄7寸WIFI线控器发布,热泵、温控器、智能家电首选!
一、产品介绍 此次发布一款7寸高清全新外壳产品,让HMI人机界面家族再添一新成员。该产品相比其他外壳有以下5个大改动: 1 表面玻璃盖板使用2.5D立体结构; 2 液晶盖板采用一体黑设计,且液晶屏与触摸板是全贴合结构; …...
华为云云服务器评测|使用云耀云服务器L实例部署Portainer工具
华为云云服务器评测|使用云耀云服务器L实例部署Portainer工具 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点1.3 云耀云服务器L实例使用场景 二、本次实践介绍2.1 本次实践简介2.2 Portainer简介 三、购买云耀云服务器L实例3.1 登录…...
C++并发编程:构建线程安全队列(第一部分:粗粒度锁)
C并发编程:构建线程安全队列(第一部分:粗粒度锁) 引言 在多线程编程中,线程之间的数据共享和通信是一个非常重要的问题。在这篇博客中,我们将讨论如何用C实现一个基础但非常实用的线程安全队列。这个队列…...
C++设计模式-更新中
单例模式 这个类实现了单例模式。单例模式是一种设计模式,旨在确保一个类只有一个实例,并提供一个全局访问点来获取该实例。 在 ConnectionManager 类中,它通过以下方式实现了单例模式: 构造函数 ConnectionManager() 被声明为…...
Hydra工具的使用
目录 Hydra初识 Hydra使用 hydra破解mysql 前言 不固定用户名密码爆破 hydra破解ssh 以用户名为密码登录 hydra破解rdp 将爆破密码的结果输出到文件中 Hydra初识 前言: hydra是一款开源的暴力破解工具,支持多种服务破解原理:使用户…...
Pytorch学习:卷积神经网络—nn.Conv2d、nn.MaxPool2d、nn.ReLU、nn.Linear和nn.Dropout
文章目录 1. torch.nn.Conv2d2. torch.nn.MaxPool2d3. torch.nn.ReLU4. torch.nn.Linear5. torch.nn.Dropout 卷积神经网络详解:csdn链接 其中包括对卷积操作中卷积核的计算、填充、步幅以及最大值池化的操作。 1. torch.nn.Conv2d 对由多个输入平面组成的输入信号…...
水果库存系统(SSM+Thymeleaf版)
不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。 文章目录 一、前言二、系统架构与需求分析1、技术栈1.1 后端1.2 前端 2、需求分析 三、设计…...
如何在VueJS应用程序中设置Toast通知
通知是开发者提升应用程序互动性和改善用户体验的强大工具。通过利用通知,开发者可以在用户与应用程序互动的同时,有效地向用户传达重要事件。 通知在应用程序中起着至关重要的作用,可以及时通知用户有关各种操作和事件的信息。它们可以用于通…...
css让元素保持等比例宽高
使用新属性 aspect-ratio: 16/9; 代码示例 <style>div {width: 60%;/* 等比例宽高 */aspect-ratio: 16/9;background-color: red;margin: auto;}</style> </head><body><div></div> </body>示例 aspect-ratio兼容性...
骨传导和入耳式哪个危害大一点?入耳式和骨传导哪种好?
骨传导和入耳式这两种耳机虽然都存在一定的危害,但是入耳式耳机对人体的危害要更大一点。 入耳式耳机直接塞进耳朵这种佩戴方式,会阻塞外部声音的进入,长时间使用可能会导致耳道感染,还可能对听力造成损伤,而骨传导耳…...
介绍OpenCV
OpenCV是一个开源计算机视觉库,可用于各种任务,如物体识别、人脸识别、运动跟踪、图像处理和视频处理等。它最初由英特尔公司开发,目前由跨学科开发人员社区维护和支持。OpenCV可以在多个平台上运行,包括Windows、Linux、Android和…...
Android中的view绘制流程,简单理解
简单理解 Android中的View类代表用户界面中基本的构建块。一个View在屏幕中占据一个矩形区域、并且负责绘制和事件处理。View是所有widgets的基础类,widgets是我们通常用于创建和用户交互的组件,比如按钮、文本输入框等等。子类ViewGroup是所有布局&…...
商城开发:店铺管理系统应具备哪些功能?
电子商务的迅猛发展,越来越多的企业选择在线商城作为业务拓展的重要渠道。而要实现一个成功的在线商城,一个强大而高效的店铺管理系统是不可或缺的。店铺管理系统作为商城的核心管理工具,应具备一系列功能,以提供卓越的用户体验和…...
小白学go基础04-命名惯例对标识符进行命名
计算机科学中只有两件难事:缓存失效和命名。 命名是编程语言的要求,但是好的命名却是为了提高程序的可读性和可维护性。好的命名是什么样子的呢?Go语言的贡献者和布道师Dave Cheney给出了一个说法:“一个好笑话,如果你…...
使用iCloud和Shortcuts实现跨设备同步与自动化数据采集
在如今的数字时代,跨设备同步和自动化数据采集对于提高工作效率和便利性至关重要。苹果的iCloud和Shortcuts App为我们提供了强大的工具,可以实现跨设备同步和自动化数据采集的功能。本文将详细介绍如何利用iCloud和Shortcuts App实现这些功能࿰…...
Spring框架-基于STOMP使用Websocket
文章目录 前言一、范例演示1.注解方式2.XML方式二、可能出现错误错误: WebSocket代理中断错误: 缺少EventExecutor类错误: 缺少Publisher类错误: 缺少Scheduler类错误: WebSocket调用失败总结前言 Spring框架提供了多种WebSock消息机制,不仅包含了模拟SockJS,还提供了基…...
kafka-- 安装kafka manager及简单使用
一 、安装kafka manager 管控台: # 安装kafka manager 管控台: ## 上传 cd /usr/local/software ## 解压 unzip kafka-manager-2.0.0.2.zip -d /usr/local/ cd /usr/local/kafka-manager-2.0.0.2/conf vim /usr/local/kafka-manager-2.0.0.2/conf/appl…...
深圳-海岸城购物中心数据分析
做数据分析的时候,如果要对商场进行分析,可以从这些数据纬度进行分析,如下图所示: 截图来源于数位观察:https://www.swguancha.com/...
vue3 + elementplus Cannot read properties of null (reading ‘isCE‘)
使用命令行直接下载的element-plus,使用时会报错。 卸载掉,然后在项目根目录下,使用vue ui安装依赖, 即可使用...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
