rpm包编译工具rpmbuild使用介绍
rpmbuild是一个命令行工具,用于构建RPM(Red Hat Package Manager)软件包。RPM是一种用于在Linux系统上安装和管理软件的标准格式。rpmbuild可以将源代码或二进制文件打包成RPM软件包,并为之配置元数据、依赖项、文件列表等。rpmbuild可以在各种Linux发行版中使用,例如Red Hat、CentOS、Fedora、SUSE、Mageia等。它是RPM构建过程的核心工具之一,常被系统管理员和开发人员使用。以下就制作rpm包过程予以介绍:
一、rpm 包制作过程
1、安装工具
# 编译工具
yum install -y gcc make# rpm 包工作目录生成工具
yum install -y rpmdevtools# rpm 包构建工具
yum install -y rpm-build
2、创建工作目录
2.1、手动创建
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
2.2、rpmdevtools 构建创建
此命令会生成一个 rpmbuild 的目录,这个目录就是制作 rpm 包的环境,需要注意的是:此命令只有在/root下执行生效,且已有rpmbuild目录时不重新创建。
cd /root/
rpmdev-setuptreecd rpmbuild && ls
BUILD RPMS SOURCES SPECS SRPMS
各个目录的一般用途如下简介:
- BUILD 编译rpm包的临时目录
- BUILDROOT 编译后生成的软件临时安装目录
- RPMS 最终生成的可安装rpm包的所在目录
- SOURCES 所有源代码和补丁文件的存放目录
- SPECS 存放SPEC文件的目录(重要)
- SRPMS 软件最终的rpm源码格式存放路径
3、制作rpm包前准备
3.1、拷贝源码包或源码至SOURCES目录并编译源码二进制文件
当仓库存在MakeFile是通过make编译产生二进制文件,不存在时进行编写
3.2、书写编译脚本
spec 脚本书写请参考:https://blog.csdn.net/yuelai_217/article/details/130722081
并将spec 脚本拷贝至SPECS目录下
4、制作包
rpmbuild -ba SPECS/xxx.spec
5、安装验证
rpm -ivh xxx.rpm
二、rpmbuild 常见命令
2.1、rpmbuild 基本格式
rpmbuild [options] [spec文档|tarball包|源码包]
rpmbuild -ba nginx.spec
2.2、使用spec 文件构建选项
| 选项 | 含义 |
|---|---|
| -bp | 文件中安装执行前的地方 |
| -bc | 执行spec的%pre和%build 段(准备并编译) |
| -bi | 执行spec中%pre,%build与%install(准备,编译并安装) |
| -bl | 检查spec中的%file段(查看文件是否齐全) |
| -ba | 建立源码与二进制包(常用) |
| -bb | 只建立二进制包(常用) |
| -bs | 只建立源码包 |
2.3、tarball包建立,与spec类似
使用源码tar包进行构建
rpmbuild -tb xxx.zip
| 选项 | 含义 |
|---|---|
| -tp | 对应-bp |
| -tc | 对应-bc |
| -ti | 对应-bi |
| -ta | 对应-ba |
| -tb | 对应-bb |
| -ts | 对应-bs |
2.4、从源码包建立
| 选项 | 含义 |
|---|---|
| –rebuild | 建立二进制包,通-bb |
| –buildroot=DIRECTORY | 确定以root目录建立包 |
| –clean | 完成打包后清除BUILD下的文件目录 |
| –nobuild | 不进行%build的阶段 |
| –nodeps | 不检查建立包时的关联文件 |
| –rmsource | 完成打包后清除SOURCES |
| –rmspec | 完成打包后清除SPEC |
| –target=CPU-VENDOR-OS | 确定包的最终使用平台 |
参考文档
1、https://www.shuzhiduo.com/A/D854Dy825E/
2、https://blog.51cto.com/pencild/1532569
3、https://www.cnblogs.com/Tzyyviki/p/14710479.html
相关文章:
rpm包编译工具rpmbuild使用介绍
rpmbuild是一个命令行工具,用于构建RPM(Red Hat Package Manager)软件包。RPM是一种用于在Linux系统上安装和管理软件的标准格式。rpmbuild可以将源代码或二进制文件打包成RPM软件包,并为之配置元数据、依赖项、文件列表等。rpmbu…...
vue3中使用cherry-markDown步骤
附cherry-markDown官网及api使用示例 官网:GitHub - Tencent/cherry-markdown: ✨ A Markdown Editor api:Cherry Markdown API 考虑到复用性,我在插件的基础上做了二次封装,步骤如下: 1.下载 npm install cherry-ma…...
数据建模方法论及实施步骤
了解数据建模之前首先要知道的是什么是数据模型。数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。 一、概要:数据…...
AUTOSAR知识点 之 COM (一):基础知识
目录 1、概述 1.1、简介 1.2、各模块依赖关系 1.2.1、PDUR关系 1.2.2、RTE 2、SPEC解读...
自媒体品牌宣传策略注意哪些,是怎么种草的
众所周知,小红书平台有着极其强大的种草能力。不论新品牌孵化,还是大品牌扩张,都会将目光投注到这里,那么小红书的品牌宣传策略究竟是怎样的呢。 一、聚焦种草能力 前面已经提到了,小红书平台是一个以“种草”为特色的…...
网络带宽管理
网络某一部分的带宽使用过多,可能会影响整个网络的性能,带宽问题甚至会影响业务关键型服务并导致网络停机。在企业中保持稳定的网络性能可能具有挑战性,因为采用数字化的网络可扩展性和敏捷性应该与组织的发展同步。随着基础设施的扩展、新应…...
SpringCloud(27. Redis 和 ZK 分布式锁)
上一篇 :26.分布式服务框架Dubbo面试题简析 1. redis 分布式锁 官方叫做 RedLock 算法,是 redis 官方支持的分布式锁算法。这个分布式锁有 3 个重要的考量点: 互斥(只能有一个客户端获取锁)不能死锁容错(…...
运行时栈帧结构与方法调用
1 运行时栈帧结构 Java虚拟机以方法作为最基本执行单元,“栈帧”则是用于支持虚拟机进行方法调用和方法执行背后的数据结构。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。 1.1 局部变量表 局部变量表的容量以变量槽为最小单位。 Java…...
VSCode +gdb+gdbserver远程调试arm开发板
一、下载编译器 从ARM官网下载gcc-arm编译器,编译器中自带gdb和gdbserver,可以省去自己编译。 注:gdb是电脑端程序,gdbserver是arm开发板程序 arm官网链接:https://developer.arm.com/downloads/-/arm-gnu-toolchain-d…...
阿里云大学考试python中级题目及解析-python高级
阿里云大学考试python高级题目及解析 1.以上代码输出结果为 a [1,2,3,None,(),[],] print(len(a))A.4 B.5 C.6 D.syntax error C 列表中元素可以存储任意数据类型 2.将字符串s 中的字母a替换为字母,以下代码正确的是 A.s.swap(“b”,“a”) B.s.r…...
基于FPGA的车牌识别
基于FPGA进行车牌识别 基于FPGA进行车牌识别 1. 文件说明2. 程序移植说明3. 小小的编程感想 本项目的原理讲解视频已经上传到B站“基于FPGA进行车牌识别”。 本项目全部开源,见我本人的Github仓库“License-Plate-Recognition-FPGA”。 1. 文件说明 小技巧&…...
Qt - 进程/线程 补充进阶
Qt - 进程/线程 补充进阶 多线程quit / eixt / terminate QThread例子tdicethread 类.h.cpp widget 类.h.cpp 线程同步 多线程 quit / eixt / terminate quit 应用程序或线程安全的取消事件处理队列的执行,并随后使线程退出(如果只希望结束线程并保证它…...
spring笔记
spring 和 springboot的区别 自动配置原理 beanFactory接口和ApplicationContext接口 两个都是 IOC 容器 ApplicationContext接口是BeanFactory接口实现类的子类 功能: ApplicationContext扩展BeanFactory BeanFactoryApplicationContext控制反转国际化支持 …...
最大熵模型
最大熵模型(maximum entropy model)由最大熵原理推导实现 最大熵原理 最大熵原理是概率模型学习的一个准则。最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型时最好…...
微服务中网关的配置
一、添加 Spring Cloud Gateway 依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId> </dependency>二、配置网关路由 在application.yaml中配置如下内容:…...
Linux基本指令实现4及热键指令详解
目录 Linux热键补充: 1.bc指令: Tab键的智能补充: ctrlc键: uname指令: lscpu指令: lsmem指令: df -h指令: 关机指令: 扩展指令: Linux热键补充&#…...
系统调用与API
系统调用介绍 什么是系统调用 为了让应用程序有能力访问系统资源,也为了让程序借助操作系统做一些由操作系统支持的行为,每个操作系统都会提供一套接口,以供应用程序使用。系统调用涵盖的功能很广,有程序运行所必需的支持…...
OpenPCDet系列 | 5.4.1 DenseHead中的AnchorGenerator锚框生成模块
文章目录 AnchorGenerator模块AnchorGenerator.generate_anchors函数 AnchorGenerator模块 首先,根据点云场景将其划分为一个个grid,这个grid size是可以通过配置文件设定的点云场景方位和voxel大小计算出来的。 POINT_CLOUD_RANGE: [0, -39.68, -3, 6…...
【开发者指南】如何在MyEclipse中使用HTML或JSP设计器?(上)
MyEclipse v2022.1.0正式版下载 一、HTML & JSP 可视化设计器 本文简要介绍了 MyEclipse HTML 和 JSP Web 设计器的概念、功能和基本操作过程。这两个设计器具有相似的功能和相同的操作模型,但本文为专门针对其类型的内容。本文档中的示例是使用 MyEclipse HT…...
Node开发Web后台服务
简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。 能方便地搭建响应速度快、易于扩展的网络应用&#…...
HFSS仿真结果怎么看?一文读懂S参数与电场图,让你的T型波导分析不再迷茫
HFSS仿真结果深度解析:从S参数到电场图的工程实践指南面对HFSS仿真生成的复杂数据图表,许多工程师常陷入"看得见数据却读不懂含义"的困境。本文将带您穿透数据表象,掌握T型波导性能分析的核心方法论。1. S参数:波导性能…...
除了排错,你可能不知道OPC Expert v8.1还能做这些:数据归档、计算与冗余实战
解锁OPC Expert v8.1的隐藏潜力:数据归档、实时计算与冗余架构实战指南在工业自动化领域,OPC Expert常被视为故障排查的"急救箱",但它的能力远不止于此。当大多数工程师还在用它解决DCOM配置问题时,少数先行者已经用它重…...
飞书远程控机:OpenClaw配置全攻略
本文详细介绍如何通过 OpenClaw 工具对接飞书开放平台,配置智能机器人实现 Windows 电脑的远程控制。主要内容涵盖文件管理和程序启动等核心功能的实现方法,并提供完整的配置指南与常见问题解决方案。 一、使用前提说明 1. 系统要求 仅适用于 Windows…...
Win10系统清理避坑指南:你的BAT脚本真的安全吗?盘点那些不能乱删的文件
Win10系统清理避坑指南:BAT脚本安全操作手册每次看到那些号称"一键清理系统垃圾"的BAT脚本在技术论坛被疯狂转发,我的工程师朋友老张就会忍不住摇头。上周他刚帮一位设计师修复了崩溃的Photoshop——原因正是某个清理脚本删除了Adobe的临时工作…...
销售怎么通过各种方法获取电话号码
第一种就是那个用爬虫电话号码,然后再打电话给客户。第二种是在别人的挪车电话看车挪车电话,然后再打电话找客户。第三就是。扫楼一顿顿的扫,第四就是这个那种商店,一个个的去问陌拜地推一个个的问店子要不要贷款,去问…...
Unity塔防底层架构:ScriptableObject驱动的数据契约设计
1. 这不是“又一个塔防模板”,而是塔防开发的底层操作系统我第一次在Asset Store点开Tower Defense Toolkit 4(TDTK-4)的预览图时,下意识划走了——界面太“干净”了,没有炫酷的粒子特效演示,没有满屏飞舞的…...
ModernWMS核心功能详解:从ASN入库到Dispatch出库的完整工作流
ModernWMS核心功能详解:从ASN入库到Dispatch出库的完整工作流 【免费下载链接】ModernWMS The open source simple and complete warehouse management system is derived from our many years of experience in implementing erp projects. We stripped the origin…...
使用libusb-win32驱动复活老旧USB硬件:以Elektor Magic Eye为例
1. 项目概述:让老硬件在新时代焕发新生手头有一台十多年前的《Elektor》杂志上刊登的“Magic Eye EM84”复古VFD显示屏项目,想把它接到Windows 10电脑上当个酷炫的CPU占用率显示器,却发现官方提供的“AVR309”USB驱动在新系统上彻底罢工了。这…...
Python到Android的魔法之旅:5步将你的代码变成移动应用
Python到Android的魔法之旅:5步将你的代码变成移动应用 【免费下载链接】python-for-android Turn your Python application into an Android APK 项目地址: https://gitcode.com/gh_mirrors/py/python-for-android 想象一下,你花了几个月时间精心…...
TII投稿避坑指南:LaTeX模板编译报错‘xxx-eps-converted-to.pdf not found’的终极解决方案
TII投稿LaTeX避坑实战:从编译报错到完美PDF生成的终极指南 凌晨三点的实验室,屏幕上闪烁的xxx-eps-converted-to.pdf not found错误提示仿佛在嘲笑你连续八小时的徒劳尝试。这不是科幻场景,而是每位用LaTeX撰写TII论文的研究者都可能遭遇的真…...
