Linux 命令之 rpmbuild -- 用于创建 rpm 格式的二进制软件包和源码软件包

文章目录

  • 一、命令介绍
  • 二、命令选项
    • (一)从 specfile 建立
    • (二)从 tarball 包建立
    • (三)从 source package 包建立
    • (四)其它选项
    • (五)所有 rpm 都可使用的选项
    • (六)附加选项
    • (七)帮助选项
  • 三、命令示例
    • (一)根据配置文件对源码包进一步解压,得到最终的源码文件

一、命令介绍

命令 rpmbuild 用于创建 RPM 软件包和 SRPM 软件包,这两类软件包分别是 rpm 格式的二进制软件包和源码软件包

二、命令选项

Build options with [ <specfile> | <tarball> | <source package> ]

中文译为:通过配置文件或 tar.gz 格式的源码包或者 rpm 格式的源码包来构建

(一)从 specfile 建立

选项说明
-bpbuild through %prep (unpack sources and apply patches) from <specfile>.
译文:从 specfile 文件的 %prep 开始建立(解开源码包并打补丁),只作准备,解压与打补丁
-bcbuild through %build (%prep, then compile) from <specfile>.
译文:从文件的 %build 开始建立(解开源码包、打补丁、编译)
-bibuild through %install (%prep, %build, then install) from <specfile>
译文:从文件的 %install 开始建立(解开源码包、打补丁、编译、安装)
-blverify %files section from <specfile>.
译文:检查文件的 %files 段,检验文件是否齐全
-babuild source and binary packages from <specfile>.
译文:创建源码包(SRPM)和二进制包(RPM)
-bbbuild binary package only from <specfile>.
译文:只构建二进制包
-bsbuild source package only from <specfile>.
译文:只建立源码包(SRPM)

(二)从 tarball 包建立

这个 tarball 应该是以 .tar 为后缀名的包。

选项说明
-tpbuild through %prep (unpack sources and apply patches) from <tarball>.
译文:从 tar 包的 %prep 开始构建(解开源码包并打补丁)
-tcbuild through %build (%prep, then compile) from <tarball>.
译文:从 tar 包的 %build 开始建立(解开源码包、打补丁、编译)
-tibuild through %install (%prep, %build, then install) from <tarball>.
译文:从 tar 包的 %install 开始建立(解开源码包、打补丁、编译、安装)
-tabuild source and binary packages from <tarball>.
译文:从 tar 包建立源码包和二进制包
-tbbuild binary package only from <tarball>.
译文:只建立二进制包
-tsbuild source package only from <tarball>.
译文:只建立源码包

(三)从 source package 包建立

这个源码包,应该是以 .tar.gz 为后缀名的包。

选项说明
--rebuildbuild binary package from <source package>.
译文:基于源码包建立二进制包(*.rpm)
--recompilebuild through %install (%prep, %build, then install) from <source package>.
译文:基于源码包的 %install 开始建立(解开源码包、打补丁、编译、安装)

(四)其它选项

选项说明
--buildroot<DIRECTORY>override build root. 重写生成根目录
--cleanremove build tree when done. 完成打包后清除 BUILD下的文件目录
--nobuilddo not execute any stages of the build. 不进行 BUILD 的阶段
--nodepsdo not verify build dependencies. 不检查建立包时的关联文件
--nodirtokensgenerate package header(s) compatible with (legacy) rpm[23] packaging. 生成与(传统)rpm[23]打包兼容的包头
--rmsourceremove sources when done. 完成打包后清除 sources
--rmspecremove specfile when done. 完成打包后清除 specfile
--short-circuitskip straight to specified stage (only for c,i). 直接跳到指定的阶段(仅适用于c、i)
--target<CPU-VENDOR-OS>override target platform. 覆盖目标平台,确定包的最终使用平台

(五)所有 rpm 都可使用的选项

Common options for all rpm modes.

选项说明
-D 或 --define<宏表达式>define MACRO with value EXPR. 用值表达式定义宏
-E 或 --eval<表达式>print macro expansion of EXPR. 打印表达式的宏扩展
--macros<filename>read instead of default file(s). 读取而不是默认文件
--nodigestdon’t verify package digest(s). 不验证包摘要,不检查包的说明信息
--nosignaturedon’t verify package signature(s). 不检查包的签名信息
--rcfile<filename>read instead of default file(s). 读 文件代替默认文件
-r 或 --root<ROOT>use ROOT as top level directory (default: “/”). 使用根目录作为顶级目录(默认值:“/”)
--querytagsdisplay known query tags. 显示已知查询标记
--showrcdisplay final rpmrc and macro configuration. 显示最终的rpmrc和宏配置
--quietprovide less detailed output. 提供不太详细的输出
-v 或 --verboseprovide more detailed output. 提供大量的详细的信息
--versionprint the version of rpm being used. 显示rpm包的版本

(六)附加选项

Options implemented via popt alias/exec. 通过popt alias/exec实现的选项

选项说明
--dbpath<目录>use database in DIRECTORY. 使用目录中的数据库
--with<选项>enable configure for build. 建立时允许配置的选项
--without<选项>disable configure for build. 建立时不允许配置的选项

(七)帮助选项

Help options.

选项说明
-? 或 --helpShow this help message. 显示帮助信息
--usageDisplay brief usage message. 显示使用方法的信息

三、命令示例

(一)根据配置文件对源码包进一步解压,得到最终的源码文件

这个最终的源码文件应该是存放在目录 BUILD 下。

先切换到目录 SPECS 下:

[root@localhost ~]# cd /root/rpmbuild/SPECS

选项 -bp 会根据配置文件对 SOURCES 目录下源码包进一步解压:

rpmbuild -bp httpd.specs             

欲了解命令 rpmbuild 在安装 SRPM 软件包的实际使用,猛戳《Linux 如何安装 SRPM 包》

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

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

相关文章

只做macd二次金叉_【教你一招】MACD低位二次金叉

原标题&#xff1a;【教你一招】MACD低位二次金叉来源&#xff1a;K线密码MACD低位二次金叉技术要点1、第二次金叉离第一次金叉距离越近越好&#xff1b;2、MACD第二次金叉的位置以高于第一次金叉为好&#xff1b;3、MACD第二次金叉时结合K线形态上的攻击形态研判(如&#xff1…

计算机领域专业术语中英文对照(时常更新)

机器学习 线性回归(linear regression) 多标签分类(multi-label classification&#xff0c;MLC) 验证集(validation) 均方误差(MSE) 偏差(bias) 方差(variance) 深度学习 多层感知机(MLP) 反向传播(Back Propagation) 张量(Tensor) 随机梯度下降(SGD) 向量(Vector) 标量(Sc…

owasp maven_OWASP依赖性检查Maven插件–必须具备

owasp maven我不得不非常遗憾地承认&#xff0c;我不知道OWASP依赖检查maven插件 。 自2013年以来似乎已经存在。显然GitHub上已有千个项目正在使用它。 过去&#xff0c;我手动检查了依赖项&#xff0c;以根据漏洞数据库检查它们&#xff0c;或者在很多情况下&#xff0c;我只…

软件包管理器 RPM 升级软件包过程分析

升级软件包 alsaplayer-0.99.76-2.2.fc4.i386.rpm&#xff0c;并显示详细的升级信息&#xff1a; rpm -Uvv alsaplayer-0.99.76-2.2.fc4.i386.rpm把显示内容当中对我们有用的挑出来&#xff1a; D: opening db environment /var/lib/rpm/Packages joinenv D: opening d…

ubtunu打开firefox_Linux Ubuntu 终端命令行打开firefox报错

1&#xff0c;报错$ firefox(firefox:2673): GConf-WARNING **: Client failed to connect to the D-BUS daemon:Failed to connect to socket /tmp/dbus-80Eq35bHIz: Connection refused(firefox:2673): GConf-WARNING **: Client failed to connect to the D-BUS daemon:Fail…

自然语言处理领域基本概念笔记

自然语言处理 词向量&#xff1a; 自然语言处理问题要转化为机器学习的问题&#xff0c;首先就要把单词数学化表示&#xff0c;就是用n维实数向量来代表一个单词。 对话系统 对话系统发展历程的三个阶段&#xff1a; 1.基于符号规则和模板的对话系统 2.基于统计机器学习的…

spring-junit4_基于Spring的应用程序-迁移到Junit 5

spring-junit4这是关于将基于Gradle的Spring Boot应用程序从Junit 4迁移到闪亮的新Junit 5的快速文章。Junit 4测试继续与Junit 5 Test Engine抽象一起工作&#xff0c;该抽象为在不同编程模型中编写的测试提供支持。例如&#xff0c;Junit 5支持能够运行JUnit 4测试的Vintage …

如何理解 inode

一、inode是什么&#xff1f; 理解inode&#xff0c;要从文件储存说起。 文件储存在硬盘上&#xff0c;硬盘的最小存储单位叫做"扇区"&#xff08;Sector&#xff09;。每个扇区储存512字节&#xff08;相当于0.5KB&#xff09;。 操作系统读取硬盘的时候&#xff0c…

go语言os.exit(1)_Go语言-信号os.Interrupt和信号syscall.SIGTERM的应用

实例package mainimport("fmt""os""os/signal""sync""syscall""time")func worker(stop for {select {case fmt.Println("exit")returndefault:fmt.Println("running...")time.Sleep(3)}}}fu…

深度学习基本概念笔记

注意力机制(Attention Mechanism): 注意力机制受到人类视觉注意力机制的启发&#xff0c;即关注图像特定部分的能力。即当神经网络发现输入数据的关键信息后&#xff0c;通过学习&#xff0c;在后继的预测阶段对其予以重点关注。 Attention Mechanism可以帮助模型对输入的X每个…

java api 开发_Java开发人员应该知道的前20个库和API

java api 开发优秀且经验丰富的Java开发人员的特征之一是对API的广泛了解&#xff0c;包括JDK和第三方库。 我花了很多时间来学习API&#xff0c;尤其是在阅读了Effective Java 3rd Edition之后 &#xff0c;Joshua Bloch建议在Java 3rd Edition中使用现有的API进行开发&#x…

Linux 系统的硬链接和软链接详解

文章目录什么是链接链接用来干什么的硬链接和软链接的区别硬链接和软链接的图示总结我们知道文件都有文件名与数据&#xff0c;这在 Linux 上被分成两个部分&#xff1a;用户数据 (user data) 与元数据 (metadata)。用户数据&#xff0c;即文件数据块 (data block)&#xff0c;…

js如何监听元素事件是否被移除_JavaScript 监听元素是否进入/移出可视区域

JavaScript 监听元素是否进入/移出可视区域常规操作防抖节流IntersectionObserver兼容的代码常规操作通常的做法是&#xff0c;监听srcoll事件&#xff0c;根据元素的offset来判断。window.addEventListener(scroll, this.scrollHandle, true);使用getBoundingClientRec()来获取…

人工智能领域论文常见基本概念笔记

BLEU分数: 一个比较候选文本翻译与其他一个或多个参考翻译的评价分数。 AUC: 衡量学习器优劣的一种指标&#xff0c;Roc曲线下与坐标轴围成的面积(0.5~1),越接近1&#xff0c;检测方法真实性越高。 Image Caption: 一般有几种叫法&#xff1a;图像描述&#xff0c;图像标注…

okta-spring_通过Okta的单点登录保护Spring Boot Web App的安全

okta-spring“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 您可以使用SpringBoot和Okta在不到20分钟的时间内启动具有完整用户身份和…

Mac 键盘符号整理

图标介绍⌘Command⇧Shift⇪Caps Lock⌥Option Alt⌃Control↩Enter⌫Delete⌦Fn Delete↑上箭头↓下箭头←左箭头→右箭头⇞Fn ↑ Page Up⇟Fn ↓ Page DownHomeFn ←EndFn →⇥Tab 右制表符⇤Shift Tab 左制表符⎋Esc Escape⏏电源开关键

团队的英文翻译缩写_魔兽世界各种英文/拼音/缩写的翻译/解释

大灾变缩写为CTM团队副本名称缩写&#xff1a;VOA(国服简称为宝库&#xff0c;拼音缩写为BK....)&#xff1a;Vault of Archavon 八十年代团队副本阿尔卡冯的宝库&#xff0c;台服译作亞夏梵穹殿。位于冬拥湖(台服译作冬握湖)。分10人和25人难度。没有困难模式。NAXX: Naxxrama…

机器学习常见基本概念笔记

机器学习 监督学习和非监督学习: 有监督学习的方法就是识别事物&#xff0c;识别的结果表现在给待识别数据加上了标签。因此训练样本集必须由带标签的样本组成。比如分类和回归。 而无监督学习方法只有要分析的数据集的本身&#xff0c;预先没有什么标签。如果发现数据集呈现…

adf开发_在EL表达式中引用ADF Faces组件

adf开发EL表达式通常用于在页面上指定ADF Faces组件的属性值。 有趣的是&#xff0c;我们可以使用component关键字来引用要为其评估EL表达式的组件实例。 这是略与此类似Java中。 例如&#xff0c;在以下代码段中&#xff0c;按钮的提示被评估为按钮的文本值&#xff0c;并且它…

Navicat Premium for Mac 快捷键

快捷键说明Comm R运行全部语句Shift Comm R运行当前语句Comm 1显示/隐藏左侧的导航窗格Comm 2显示/隐藏右侧的信息窗格Option Comm T隐藏工具栏Comm N创建新表Comm 添加记录Comm -删除记录Comm Y新建查询&#xff0c;这样会打开一个标签界面&#xff0c;可以在这个界…