【问题标题】:How can I pass version number as a variable into rpmbuilder?如何将版本号作为变量传递给 rpmbuilder?
【发布时间】:2020-08-28 00:36:45
【问题描述】:

构建 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,但在我看来,这是一个非常复杂的问题解决方案。当然必须有一个更简单的方法来做到这一点?还是我从根本上误解了这个问题?

【问题讨论】:

  • shell中的单引号和双引号有什么区别?

标签: linux bash centos rpm


【解决方案1】:

整个问题是我在--define 字符串周围使用了单引号。在bash 中,这意味着字符串中的所有内容都按字面意思传递,而不扩展任何变量。如果我像这样调用rpmbuild,它会按预期工作:

rpmbuild --target x86_64 --define "version ${BUILD_VERSION_STRING}" -bb mvpn.spec -vv

【讨论】:

    猜你喜欢
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    相关资源
    最近更新 更多