文章目录

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

一、命令介绍

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

二、命令选项

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

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

(一)从 specfile 建立

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

(二)从 tarball 包建立

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

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

(三)从 source package 包建立

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

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

(四)其它选项

选项 说明
--buildroot<DIRECTORY> override build root. 重写生成根目录
--clean remove build tree when done. 完成打包后清除 BUILD下的文件目录
--nobuild do not execute any stages of the build. 不进行 BUILD 的阶段
--nodeps do not verify build dependencies. 不检查建立包时的关联文件
--nodirtokens generate package header(s) compatible with (legacy) rpm[23] packaging. 生成与(传统)rpm[23]打包兼容的包头
--rmsource remove sources when done. 完成打包后清除 sources
--rmspec remove specfile when done. 完成打包后清除 specfile
--short-circuit skip 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). 读取而不是默认文件
--nodigest don’t verify package digest(s). 不验证包摘要,不检查包的说明信息
--nosignature don’t verify package signature(s). 不检查包的签名信息
--rcfile<filename> read instead of default file(s). 读 文件代替默认文件
-r 或 --root<ROOT> use ROOT as top level directory (default: “/”). 使用根目录作为顶级目录(默认值:“/”)
--querytags display known query tags. 显示已知查询标记
--showrc display final rpmrc and macro configuration. 显示最终的rpmrc和宏配置
--quiet provide less detailed output. 提供不太详细的输出
-v 或 --verbose provide more detailed output. 提供大量的详细的信息
--version print 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.

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

三、命令示例

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

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

先切换到目录 SPECS 下:

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

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

rpmbuild -bp httpd.specs

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

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

  1. linux文件一列加1,Linux命令(1)-创建文件

    版本:centos7 1.可以使用cat创建一个新的文件 命令:cat>>filename 使用cat创建文件时,以系统默认的文件属性作为新文件的属性,并接受键盘输入作为文件的内容.输入结 ...

  2. linux 运行c b停止,以下Linux命令中,用于终止某个进程的命令是()。A.deadB.killC.quitD.exit...

    以下Linux命令中,用于终止某个进程的命令是().A.deadB.killC.quitD.exit 更多相关问题 The substance does not dissolve in water _ ...

  3. Linux命令之 DNF -- 新一代的 RPM 软件包管理器

    文章目录 一.命令介绍 二.安装 DNF 三.DNF 命令 (一)主要命令 1. 安装.升级和删除软件包 2. 查询和检查软件包 3. 执行其它功能 (二)插件命令 四.选项参数 五.命令示例 (一) ...

  4. linux 移动压缩包 命令,Linux命令,复制,移动,删除,创建,解压缩,修改权限

    cp命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大. 语法: cp [选项] 源文件或目录目标文件或目录 说明:该命令把指定的源文件复制到 ...

  5. linux命令生成二进制文件,如何创建Shell脚本的二进制文件

    在Linux系统的工作中,我们使用了许多日常命令.大多数二进制格式提供命令都位于 /bin,/sbin, /usr/bin,/usr/sbin 等目录.作为系统管理员,我们写了很多shell脚本做几个 ...

  6. Linux 命令之 userdel -- 用于删除给定的用户以及与用户相关的文件

    文章目录 命令简介 常用选项 参考示例 删除用户 命令简介 userdel 命令用于删除指定的用户及与该用户相关的文件,英文全称即"user delete".在 Debian 上, ...

  7. Linux 命令之 usermod -- 用于修改用户的基本信息

    文章目录 命令介绍 常用选项 参考示例 设置用户默认使用的shell类型 将不能登录的用户改成可以登录的 限定用户不能 shell 登录,只能 ftp 修改用户的主目录 更改用户的名称 锁定用户的密码 ...

  8. Linux 命令之 unrar -- 解压 rar 格式的文件

    文章目录 一.命令介绍 二.常用选项 三.命令示例 (一)按完整路径解压指定的压缩包到当前目录下 (二)按完整路径且不覆盖已存在文件的方式解压指定的压缩档案到指定的目录下 一.命令介绍 需要安装 ra ...

  9. LINUX命令(1)-创建文件

    1.可以使用cat创建一个新的文件 命令:cat>>filename 使用cat创建文件时,以系统默认的文件属性作为新文件的属性,并接受键盘输入作为文件的内容.输入结束时按Ctrl+d退出 ...

最新文章

  1. 基于颜色特征,形状特征和纹理特征的数字图像的检索(Digital Image Retrieval)MATLAB GUI实现(本科毕业设计)
  2. R语言使用GGally包的ggpairs函数可视化变量相关性分析图:包含散点图、密度图、柱状图、箱图等、并自定义数据点的大小
  3. 正则表达式的兼容性问题
  4. 一个简单的Apriltag,数字,动物水果分类器
  5. fpga硬件驱动TFT液晶屏-小结
  6. php 使用PDO,防止sql注入 简单说明
  7. 计算机基础知识二进制转换,计算机基础知识数制转换
  8. 无法获取未定义或 null 引用的属性“title”_JDK中四种对象引用类型
  9. 实战生产环境vCenter HA配置(VCSA6.5)
  10. 5.1环绕声有什么不同
  11. SAR数据集项目说明文档写作
  12. [Python] L1-001. Hello World-PAT团体程序设计天梯赛GPLT
  13. k型热电偶材料_热电偶温度计的二三事
  14. 使用CSS控制表单样式/示例演示
  15. easypoi导入excel实践方法:
  16. Java8新特性 Stream流常用方法
  17. Ubuntu系统下打开chm文件
  18. 虚拟机装系统出现 ntldr is missing(NTLDR丢失)、无法正常开机、解决方法
  19. DataBinding快速入门(还在用findViewById?)
  20. “云上进化——2022全球AI生物制药大赛”来袭,30万奖池等你来战!

热门文章

  1. java 线程安全性_我如何测试Java类的线程安全性
  2. jboss性能指标_JBoss BRMS复杂事件处理(CEP)性能基准
  3. jsf 自定义属性_如何在JSF中实现自定义密码强度指示器
  4. Java:Speedment 3.2的发布–现在启用轻量级数据库微服务
  5. maven和docker_与Maven和Docker的集成测试
  6. lucene 搜索_使用Lucene的搜索服务器搜索Jira问题
  7. 如何在Java中使用Zxing和JFreeSVG创建QR Code SVG?
  8. MicroProfile OpenAPI上的Swagger UI
  9. JMetro“ Metro”选项卡,Java的TreeView和ContextMenu(JavaFX)
  10. jsf tree组件_JSF:在传统组件和时尚性能杀手之间进行选择