Yum 试图在 CentOS 6 上安装 .el7 版本

Yum trying to install .el7 release on CentOS 6

我生成了两个 RPM。一个用于 CentOS 6,一个用于 CentOS 7。

my-package-0.0.1-1.el6.x86_64

my-package-0.0.1-1.el7.x86_64

当我在 CentOS 6 机器上执行 yum info my-package 时,它给了我 el7 信息。当我做 yum install my-package 它做同样的事情,得到 el7 版本。为什么要这样做?我试图避免在 el6 机器上安装 el7 版本。

听起来它们在同一个 yum 存储库中。你不应该。您应该将一个发布到 CentOS6 存储库,将另一个发布到 CentOS7 存储库。否则,yum 正在比较它们并在比较发布标签时决定 7 > 6,因此这是最新的可用包。

el6(又名 "dist tag")作为版本的后缀方便用户使用,不是 RPM 可以select直接上。

同意显然 OP 将两个 RPM 放在同一个存储库中,@aaron-d-marasco 忽略了一些细节:

  • el6 标签不是 "convenience to the user" 而是打包者的变通方法。
  • 如果您检查软件包的元信息,您可能会注意到提供的软件包中的 .el6(或 .el7)是 附加的release 标签,例如,对于 zip-3.0-10.el7.x86_64,您可能会看到类似这样的内容:

    Name : zip
    Version : 3.0
    Release : 10.el7
    Architecture: x86_64

  • RPM 选择规则将 whole 标签用于 versionrelease 对于每个指定的 name

  • 提到的 dist 标签与 release 标签的其余部分一起排序
  • 解决方法是因为在模式中没有单独的元信息用于分发,但包装商希望跟踪这一点。
  • 因为 release 标签是 "owned" 由打包者(和 version 由上游开发),然后打包者决定如何使用它来组织包——根据 yum.
  • 选择 RPM 的内置规则

进一步阅读: