linux - 如何将版本号作为变量传递给 rpmbuilder?

标签 linux bash centos rpm

构建 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/

相关文章:

json - 使用命令行工具删除尾随的 json 逗号

linux - Makefile 没有按预期执行命令

python-2.7 - CentOs 服务器上的 slack 文件上传失败

regex - 如何更改sed中的日期格式?

linux -/usr/sbin/resetpw Linux 变体

c - Eclipse 中的资源链接(Linux - C)

linux - 如何在 linux bash/shell 中对图像进行 base64 编码

Python pip 安装错误 [SSL : CERTIFICATE_VERIFY_FAILED]

centos - 加载 nf_conntrack 失败

linux - ^[ 在 shell 提示符下转义