rpmbuild 提速优化实战:真实有效、不踩坑的打包加速技巧

很多人在使用 rpmbuild 打包时都会遇到一个问题:

网上一堆 “加速参数”,复制过去要么报错,要么速度几乎没变化,甚至越弄越慢。

这篇文章只讲真实有效、实测可用的优化技巧,区分 “源码编译加速” 和 “纯文件复制打包加速” 两种场景,避免你再踩坑。

一、先分清你的打包场景

优化是否有效,90% 取决于场景:

  1. 源码编译打包(C/C++/Go 等需要 make 编译) 可以用:并行编译、ccache、关闭调试信息
  2. 纯文件复制打包(绿色软件、游戏、脚本、解压即运行) 并行、make 完全无效!只会报错。 有效加速只有:关闭源码包、低压缩、不清理临时目录

二、通用真实有效优化(所有场景都能用)

1. 只打二进制包,跳过源码包(最有效)

rpmbuild -bb package.spec
  • -ba = 二进制 + 源码包
  • -bb = 只生成 rpm 速度提升 30%~60%

2. 关闭调试包,跳过 debuginfo

~/.rpmmacros 中添加:

%_debug_package %{nil}

省去大量符号处理与文件打包,非常明显。

3. 降低压缩级别,最快打包

%_binary_payload   w1.gzdio
%_source_payload   w1.gzdio

w1 代表 gzip 级别 1,速度最快,适合大文件打包。

4. 不清理构建目录(重复打包神器)

rpmbuild -bb --noclean package.spec

第二次、第三次打包几乎秒完成,速度提升 80%+

三、源码编译专属加速(仅编译型软件有效)

1. 并行编译(多核满负载)

%_smp_mflags -j%(nproc)

spec 中必须使用:

%build
make %{?_smp_mflags}

没有 Makefile 的包千万不要加,否则直接报错!

2. 跳过 strip 减小处理耗时

%__strip /bin/true

3. 使用 ccache 缓存编译(多次打包极快)

安装并配置 ccache,重复编译可秒级完成。

四、最容易踩坑的 “无效 / 错误优化”

这些网上流传很广,但对你的场景完全无效

  1. make -j 用于绿色软件 / 游戏打包 → 直接报错(绿色软件没有Makefile配置文件)
  2. _compress_level 并非 rpm 合法宏 → 不生效
  3. 普通用户下强行读写系统 /var/lib/rpm 数据库 → 权限报错
  4. 过度优化导致包结构损坏

五、最终推荐 .rpmmacros 配置

cat ~/.rpmmacros

%_topdir %(echo $HOME)/rpmbuild
%_dbpath %{_topdir}/rpmdb

# 并行(满核)
%_smp_mflags -j%(nproc)
%_smp_build_ncpus %(nproc)

# 关闭 debug 包、关闭 strip
%_debug_package %{nil}
%__strip /bin/true

# 压缩拉到最快(gzip level 1)
%_binary_payload w1.gzdio
%_source_payload w1.gzdio

# 编译优化(O2)
%__optflags -O2 -pipe -fPIC

六、最快打包命令

rpmbuild -bb --noclean package.spec

编译型包:并行 + ccache + 关闭调试

  • 绿色文件包:-bb + 低压缩 + –noclean
  • 不要盲目复制参数,场景不对一切白搭

按照这套真实有效优化,rpmbuild 打包速度可以轻松提升 1~5 倍

本文首发于 58Linux技术博客,专注Ubuntu桌面使用、Linux服务器运维与网站搭建实战。
       本系列的一部分

Linux服务器

Post 35 of 35

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress