rpmbuild 常见问题
宏命令问题
%make_build
可以使用make
代替;%ldconfig_scriptlets
可以使用ldconfig
代替。
例如 CentOS 7 系统,安装 epel-rpm-macros
软件包之后就可以支持这些宏命令。
指定编译核数
通过环境变量指定核树:
~# export RPM_BUILD_NCPUS=16
如果 spec 文件中以类似 make %{?_smp_mflags}
的方式进行编译,也可以使用 rpm
命令确认核数:
~# rpm --eval "%{?_smp_mflags}"
-j16
忽略依赖 RPM 包
如果 spec 文件指定了依赖某些 RPM 包,rpmbuild
命令可以增加 --nodeps
参数跳过。
如果需要使用依赖的 RPM 包提供的库和头文件,可以增加环境变量使用之前编译的 BUILDROOT
目录:
LIBRARY_PATH=~/rpmbuild/BUILDROOT/XXX/usr/lib64 C_INCLUDE_PATH=~/rpmbuild/BUILDROOT/XXX/usr/include rpmbuild --rebuild --nodeps XXX.src.rpm
忽略 buildroot 检查
rpmbuild
编译到最后可能出现文件报错:
+ /usr/lib/rpm/check-buildroot
/root/rpmbuild/BUILDROOT/at-3.1.10-49.lns8.loongarch64/usr/share/man/man8/atrun.8:.B /root/rpmbuild/BUILDROOT/at-3.1.10-49.lns8.loongarch64/usr/sbin/atd
Found '/root/rpmbuild/BUILDROOT/at-3.1.10-49.lns8.loongarch64' in installed files; aborting
error: Bad exit status from /var/tmp/rpm-tmp.WZgOHN (%install)
可以考虑使用 QA_SKIP_BUILD_ROOT=1 rpmbuild -bb rpmbuild/SOURCES/at.spec
命令增加 QA_SKIP_BUILD_ROOT
环境变量来跳过 buildroot 检查。