news 2026/6/10 14:26:44

rpmbuild命令详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
rpmbuild命令详解

1. 基本介绍

rpmbuild是用于构建RPM软件包的命令行工具,它根据spec文件中的指令编译源代码并打包成可安装的RPM文件。

2. RPM构建目录结构

默认的RPM构建目录位于~/rpmbuild/

~/rpmbuild/ ├── BUILD # 编译时临时目录 ├── BUILDROOT # 虚拟安装根目录 ├── RPMS # 生成的二进制RPM包 │ ├── i386 │ ├── i586 │ ├── i686 │ ├── noarch │ └── x86_64 ├── SOURCES # 源代码和补丁文件 ├── SPECS # spec文件目录 └── SRPMS # 源码RPM包

3. 常用命令选项

3.1 构建相关选项

# 构建所有(二进制和源码包) rpmbuild -ba package.spec # 仅构建二进制包 rpmbuild -bb package.spec # 仅构建源码包 rpmbuild -bs package.spec # 执行到解压和打补丁阶段 rpmbuild -bp package.spec # 执行到编译阶段 rpmbuild -bc package.spec # 执行到安装阶段 rpmbuild -bi package.spec # 清理BUILD目录 rpmbuild --clean package.spec # 清理所有目录 rpmbuild --rmsource package.spec

3.2 其他选项

# 使用指定的根目录 rpmbuild --define "_topdir /path/to/rpmbuild" -ba package.spec # 设置临时构建根目录 rpmbuild --buildroot /tmp/buildroot -ba package.spec # 重新构建(使用已有的源码包) rpmbuild --rebuild package.src.rpm # 重新编译 rpmbuild --recompile package.src.rpm

4. 基本使用流程

4.1 准备工作

# 创建RPM构建目录结构 mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} # 或者使用rpmdev工具 yum install rpmdevtools rpmdev-setuptree

4.2 典型构建过程

# 1. 将源码放入SOURCES目录 cp source.tar.gz ~/rpmbuild/SOURCES/ # 2. 将spec文件放入SPECS目录 cp package.spec ~/rpmbuild/SPECS/ # 3. 构建RPM包 cd ~/rpmbuild/SPECS rpmbuild -ba package.spec # 4. 查看生成的包 ls ~/rpmbuild/RPMS/*/*.rpm ls ~/rpmbuild/SRPMS/*.rpm

5. spec文件关键部分

5.1 spec文件结构示例

Name: package-name Version: 1.0 Release: 1%{?dist} Summary: Brief description License: GPLv3+ URL: http://example.com Source0: %{name}-%{version}.tar.gz BuildRequires: gcc, make Requires: bash %description Detailed description here. %prep %setup -q %build make %{?_smp_mflags} %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} %clean rm -rf %{buildroot} %files %defattr(-,root,root,-) %doc README /usr/bin/program %changelog * Tue Jan 01 2023 Your Name <email@example.com> - 1.0-1 - Initial package

6. 高级用法

6.1 自定义构建目录

# 使用自定义的构建目录 mkdir -p /opt/mybuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} # 方法1:通过命令行指定 rpmbuild --define "_topdir /opt/mybuild" -ba package.spec # 方法2:通过配置文件设置 echo "%_topdir /opt/mybuild" >> ~/.rpmmacros

6.2 并行构建

# 使用多核并行构建 rpmbuild -ba --define "_smp_mflags -j4" package.spec

6.3 条件构建

# 根据架构条件编译 rpmbuild -ba --target=i686 package.spec # 跳过测试 rpmbuild -ba --nocheck package.spec

6.4 调试构建

# 详细输出 rpmbuild -ba --verbose package.spec # 调试模式 rpmbuild -ba --debug package.spec

7. 常用宏和变量

# 查看所有宏定义 rpm --showrc # 查看特定宏的值 rpm --eval "%_topdir" rpm --eval "%_bindir" # 常用宏: # %{_topdir} - 构建根目录 # %{_sourcedir} - 源码目录 # %{_builddir} - 构建目录 # %{_rpmdir} - RPM包目录 # %{_specdir} - spec文件目录 # %{_buildroot} - 构建根目录 # %{_mandir} - man手册目录 # %{_libdir} - 库目录

8. 实用示例

8.1 从源码包构建

# 下载源码RPM wget http://example.com/package-1.0-1.src.rpm # 安装源码包 rpm -i package-1.0-1.src.rpm # 查看解压的源码 ls ~/rpmbuild/SOURCES/ # 构建 cd ~/rpmbuild/SPECS rpmbuild -ba package.spec

8.2 快速重建

# 重新构建已有的src.rpm rpmbuild --rebuild package-1.0-1.src.rpm # 重新编译 rpmbuild --recompile package-1.0-1.src.rpm

9. 故障排除

常见问题及解决

# 1. 缺少依赖 # 安装缺失的构建依赖 yum-builddep package.spec dnf builddep package.spec # 2. 文件未找到错误 # 确保所有文件都在正确位置 ls ~/rpmbuild/SOURCES/ # 3. 权限问题 # 确保有正确的文件权限 chmod 644 ~/rpmbuild/SOURCES/* # 4. 查看详细错误信息 rpmbuild -ba --verbose package.spec 2>&1 | less

10. 配置文件

~/.rpmmacros 配置示例

%_topdir %(echo $HOME)/rpmbuild %_tmppath /tmp %_smp_mflags -j4 %packager Your Name <email@example.com> %vendor Your Company %dist .el7
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 15:17:36

嘎嘎降AI使用教程:新手必看的论文降AI率完整操作指南

嘎嘎降AI使用教程&#xff1a;新手必看的论文降AI率完整操作指南 TL;DR 嘎嘎降AI是一款操作极简的降AI工具&#xff0c;支持知网、维普、万方多平台&#xff0c;达标率99.26%。本教程从注册到出稿完整讲解&#xff0c;帮助新手快速上手&#xff0c;60秒内完成论文降AI处理。 …

作者头像 李华
网站建设 2026/6/10 13:06:54

2026必备10个降AI率工具,本科生速看!

2026必备10个降AI率工具&#xff0c;本科生速看&#xff01; AI降重工具&#xff1a;论文写作的隐形助手 在当今学术写作中&#xff0c;AI生成内容&#xff08;AIGC&#xff09;已经成为一种常见现象&#xff0c;尤其对于本科生而言&#xff0c;如何有效降低AI痕迹、提升论文原…

作者头像 李华
网站建设 2026/6/10 13:06:04

机器学习面试准备的神仙指南,横扫 Meta、Google 等大厂offe

机器学习面试准备的神仙指南&#xff0c;横扫 Meta、Google 等大厂offer 最近在准备机器学习工程师面试撒&#xff1f;网上的资料要么到处都是&#xff0c;要么太理论化了&#xff0c;根本摸不着大厂面试的门道嘛。莫慌&#xff01;今天给你安利一个 GitHub 上的宝藏项目——Ma…

作者头像 李华
网站建设 2026/6/10 13:08:27

TikTok 个人独立运营 + 养号全攻略(从 0 到稳定起号)

对个人来说&#xff0c;做 TikTok 最大的优势是&#xff1a;成本低、流量公平、放大空间大&#xff1b; 但最大的难点也很明显&#xff1a;前期养号和起号是否正确&#xff0c;直接决定账号能不能跑起来。本文将围绕 账号环境 → 养号逻辑 → 起号实操 → 内容运营 → 常见误区…

作者头像 李华
网站建设 2026/6/10 0:51:59

浅谈电气防火限流保护器设计在消防安全中的应用价值

唐雪阳 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;为实现电气防火限流保护器电气性能的自动测试&#xff0c;研制了一套基于LabVIEW的电气防火限流保护器电气性能自动测试装置。该装置可以实现对0-40A、0-63A、160-250A等多种规格的电气防火限流保护器电气性…

作者头像 李华