构建 RPM 是我们 CI 流程的一部分,所以我自然希望将版本号作为参数传递到 rpmbuild
,但我无法让它工作。我尝试了 this question 的解决方案,但它说我不能把'$'放在定义字符串中:
[mangolorax@localhost build_artifacts]$ ./package_release.sh 1.3.3.7
+ BUILD_VERSION_STRING=1.3.3.7
+ BUILD_DIR=/home/builder/build
+ exec rpmdev-setuptree
+ cd /home/mangolorax/rpmbuild/SPECS/
+ ln -sf /home/builder/build/mvpn.spec
+ rpmbuild --target x86_64 --define 'version ${BUILD_VERSION_STRING}' -bb mvpn.spec -vv
Building target platforms: x86_64
Building for target x86_64
error: line 2: Illegal char '$' in: Version: ${BUILD_VERSION_STRING}
我还找到了this question ,但在我看来,这是一个非常复杂的问题解决方案。当然必须有一个更简单的方法来做到这一点?还是我从根本上误解了这个问题?
最佳答案
整个问题是我在 --define
周围使用了单引号。字符串。在 bash
这意味着字符串中的所有内容都按字面意思传递而不扩展任何变量。如果我调用 rpmbuild
相反,它按预期工作:rpmbuild --target x86_64 --define "version ${BUILD_VERSION_STRING}" -bb mvpn.spec -vv
关于linux - 如何将版本号作为变量传递给 rpmbuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61747176/