无需修改spec文件通过rpm宏解决rpmbuild从SOURCES子目录读源文件问题
可以通过配置rpm宏的方式解决该问题,无需修改任何spec文件。
实现原理
rpmbuild默认通过%_sourcedir宏定义的路径查找源码、补丁等构建依赖文件,默认值为~/rpmbuild/SOURCES。你可以通过--define参数在执行构建命令时临时覆盖该宏的值,指向对应软件的源码子目录。
适配当前目录结构的批量构建方案
你当前的源码子目录名称和spec文件名前缀完全对应,可以直接用如下循环脚本批量构建所有包:
for spec_path in ~/rpmbuild/SPECS/*.spec; do # 提取spec文件名前缀(对应SOURCES下的子目录名) pkg_name=$(basename "${spec_path}" .spec) # 临时指定_sourcedir为对应源码子目录,执行构建 rpmbuild -bb --define "_sourcedir ~/rpmbuild/SOURCES/${pkg_name}" "${spec_path}" done
单包测试验证
你可以先执行如下命令测试单个包的构建,确认方案可用后再执行批量操作:
rpmbuild -bb --define "_sourcedir ~/rpmbuild/SOURCES/autoconf" ~/rpmbuild/SPECS/autoconf.spec
内容的提问来源于stack exchange,提问作者itsazzad
相关产品推荐
相关产品推荐

