【问题标题】:Rpm package information: Auto incrementing versionrpm包信息:自动递增版本
【发布时间】:2023-09-10 10:40:01
【问题描述】:

我想知道是否有人知道是否有一种方法可以为 rpm 包中的信息自动增加版本/发布号。

rpm -qil 'package_name'

会返回类似:

Name: package_name
Version: 1.5
Release: 000001

有没有办法在我每次执行 rpmbuild 时自动增加版本号? rpm 信息位于规范文件中。

提前致谢!

【问题讨论】:

    标签: rpmbuild


    【解决方案1】:

    您可以尝试在您的 makefile 中添加如下内容:

    perl -i.`date +"%s"` -pe 'if (/^Release:/) { s#(\d+)#$1+1#e }' YOURSPECFILE.spec
    

    每次运行此 oneliner 时,它都会递增在以“Release:”开头的行中找到的整数。

    该操作在原地完成,出于安全原因,SPEC 文件的先前内容保存在备份文件中,文件名附有纪元编号。如果您只需要一个备份,您也可以使用“-i.BAK”之类的内容,如果您确定不会发生任何错误,则可以使用“-i”。

    【讨论】:

      【解决方案2】:

      你也可以像这样设置 ENV 变量:

      export RPM_VERSION=1.1.1
      

      和然后用perl抓住它:

      perl -e 'print $ENV{RPM_VERSION}'
      

      这是我在 Bamboo 中构建 RPM 时将要使用的。

      【讨论】:

      • 你知道环境变量在 bash 中也是可用的 - 只需 $(echo $RPM_VERSION) 并且你不必调用 perl
      【解决方案3】:

      如果您不介意将 epoch 作为版本号,您可以这样做:

      Release: 0.%(perl -e 'print time()')
      

      我把 0. 放在前面的原因是,如果你想使用 epoch 以外的东西作为发布标签,而不是更改版本,你可以。

      【讨论】:

      • 有没有办法只改版本号
      • 我不明白你的问题。
      • 我已经使用 rpm -i 命令安装了一个 RPM 包,当我查询 rpm -q 它显示我在规范文件中描述的版本,现在我想单独更改版本号,而不影响任何文件,我该如何执行此操作,
      • 只需更改spec文件中的版本号并重新构建即可。
      • 应该是 rpm -i 或 rpm -U 选项,当我执行 rpm -U 时卸载旧版本并安装新版本,需要避免