【问题标题】:RPM Requires exact release tagRPM 需要准确的发布标签
【发布时间】:2014-05-18 04:28:12
【问题描述】:

我正在处理一个 Java 项目,每个模块创建单独的 rpm 包,这些包总是有一个 1.0 版本标签,但发布标签采用 Jenkins CI 注入的内部版本号。

每个组件都使用 maven-rpm-plugin。

还有一个 main rpm 包,我们在 spec 文件中将部署模块的确切版本指定为要求,作为要求示例:

要求:模块 1 = 1.0-10

要求:模块 2 = 1.0-123

这些软件包被部署到公司的存储库,并可供我们运行 CentOS 6 的开发机器使用。

所以问题是:

在一台开发机器上,之前的 main 包安装了 module1-1.0-9

当我使用 yum 安装当前 main 软件包版本时,即使我指定了 exact 软件包版本要求,module1 不会升级 ,一直到 Release 标签。

删除所有软件包并尝试安装当前的main 软件包后,module1-1.0-12 已安装!同时部署了另一个模块构建。

我一直在寻找有关这方面的任何类型的文档,但没有任何运气。

这是正常行为还是错误?

有什么想法吗? - 如果确实不是错误,即使更改版本控制策略也是受欢迎的。

【问题讨论】:

    标签: maven rpm centos6 yum


    【解决方案1】:

    包名是否发生了某种变化? Yum 使用名称、版本和版本。因此,如果您使用不同的名称进行打包,那么 yum 不会将较新的软件包视为旧软件包的更新。

    执行rpm -qip *your-rpm-file-name.rpm* 并比较名称的输出。过去我看到有些人对 RPM 的文件名和 yum/rpm 使用的 RPM 的实际名称感到困惑。

    【讨论】:

    • 我试过了,他们在 rpm 文件名上返回了正确的名称、版本、版本和架构。我怀疑 yum repo 元数据,但我还没有访问权限。
    • 您有可以在其上创建 repo 的测试机器吗?然后你可以在你控制的盒子上测试这个理论。
    【解决方案2】:

    经过一天的努力,我终于在bugzilla 中偶然发现了这个错误报告。

    我还查看了 yum 相关的 source code 并在 depsolve.py 模块上找到了一条评论,该评论解释了如何解决依赖关系并证实了之前在 CentOS 6 中报告的行为:

    1. 如果您正在安装软件包并找到所需的软件包,则会安装最新版本
    2. 如果您正在更新软件包并且已安装所需的软件包,则无需升级依赖项

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 2012-09-06
      • 2023-03-30
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多