我有一个厨师食谱来引导一些我已经使用了很长时间的工作节点,并且有一段时间我第一次需要增加我的工作池的大小,但发现新节点不是由于 yum 错误而正确引导:
Error: Package: cyrus-sasl-md5-2.1.26-21.el7.x86_64 (abc-os)
Requires: cyrus-sasl-lib(x86-64) = 2.1.26-21.el7
Installed: cyrus-sasl-lib-2.1.26-20.el7_2.x86_64 (@abc-os)
cyrus-sasl-lib(x86-64) = 2.1.26-20.el7_2
我们的内部仓库在哪里abc-os
,所以我们可以锁定软件包版本。自然地,我认为这是问题所在,但是在检查存储库时,我发现两者的完整软件包集21.el7
和 20.el7_2
都存在。
此外运行yum list available cyrus-sasl-md5
给出:
cyrus-sasl-md5.i686 2.1.26-20.el7_2 abc-os
cyrus-sasl-md5.x86_64 2.1.26-21.el7 abc-os
/var/cache/yum/x86_64/7/abc-os/gen
并在返回中查询 repo 的 sqlite 文件:
sqlite> SELECT name, arch, version, epoch, release FROM packages WHERE name LIKE 'cyrus%' ORDER BY arch, version, epoch, release, name;
cyrus-sasl-lib i686 2.1.26 0 17.el7
cyrus-sasl-lib i686 2.1.26 0 20.el7_2
cyrus-sasl-md5 i686 2.1.26 0 20.el7_2
cyrus-sasl-pla i686 2.1.26 0 20.el7_2
cyrus-sasl x86_64 2.1.26 0 17.el7
cyrus-sasl-dev x86_64 2.1.26 0 17.el7
cyrus-sasl-lib x86_64 2.1.26 0 17.el7
cyrus-sasl x86_64 2.1.26 0 20.el7_2
cyrus-sasl-dev x86_64 2.1.26 0 20.el7_2
cyrus-sasl-lib x86_64 2.1.26 0 20.el7_2
cyrus-sasl-md5 x86_64 2.1.26 0 20.el7_2
cyrus-sasl-pla x86_64 2.1.26 0 20.el7_2
cyrus-sasl x86_64 2.1.26 0 21.el7
cyrus-sasl-dev x86_64 2.1.26 0 21.el7
cyrus-sasl-lib x86_64 2.1.26 0 21.el7
cyrus-sasl-md5 x86_64 2.1.26 0 21.el7
cyrus-sasl-pla x86_64 2.1.26 0 21.el7
目前,我很困惑为什么会发生这种情况,以及如何进一步深入研究。
作为参考,操作系统是 CentOS 7.2 x86_64。
cyrus-sasl-md5-2.1.26-21.el7.x86_64 要求 cyrus-sasl-lib 在版本 2.1.26-21 上,但您有另一个版本 (2.1.26-20)。
我认为您应该卸载 cyrus-sasl-lib 并使用好的版本重新安装。
问题原来是有人只为其他 cyrus 软件包配置了yum 版本锁定配置,
cyrus-sasl-lib
但没有配置,这似乎导致 yum 无法正确解析版本。可能最好的选择是添加具有匹配版本的其他包,但由于这些特定的包对这个平台的当前化身影响不大,我只是
cyrus-sasl-lib
完全从版本锁定中删除。现在 yum 将所有内容安装/升级到最新版本,实例自行引导而不会再次出现问题。