从命令行调用时覆盖 rpmbuild 构建位置

Override rpmbuild build location when called from command line

我正在制作一些由 Jenkins 构建的配置包,然后在需要时检出。软件包本身已构建并运行良好。我现在的问题是 rpmbuild 用于实际构建项目的目录。当我从我的工作目录调用 rpmbuild SPECS/package.spec 时,rpmbuild 在 /home/user/rpmbuild 处创建了一个新目录。这在我进行 运行 测试时很好,但我更希望我能够从 Jenkins 进程调用它的任何文件进行构建。

我看到网上有人说制作一个~/.rpmmacros文件来覆盖$_topdir变量。这种方法并不真正适用于 Jenkins 构建。有什么方法可以简单地调用 rpmbuild 并在当前目录中构建?结构就在那里,它会更好地用于我正在尝试做的事情。谢谢

是的,直接覆盖_topdir即可。

rpmbuild -D '_topdir /new/value/for/_topdir'

rpmbuild --define='_topdir /new/value/for/_topdir'

它们应该是相同的,但我了解到它们并不总是出于某种原因(并且在快速测试中 rpm -D '_topdir /opt/tnstmp' --showrc | grep _topdir 没有显示修改后的值,但 rpm --define '_topdir /opt/tnstmp' --showrc | grep _topdir 显示了)。