yum upgrade 给出:... 尝试安装 [32 位软件包] 和 [64 位软件包] 时发生冲突

yum upgrade 给出:... 尝试安装 [32 位软件包] 和 [64 位软件包] 时发生冲突

我们的 Red Hat 7.6 机器安装了 64 位和 32 位库。
我正在为我们所有的机器编写一个更新脚本,以便与我们的安装后脚本一起运行,以升级所有已安装的软件包。
yum -y upgrade 返回许多这样的错误:
printers.pyc conflicts between libstdc++.i686 and libstdc++.x86_64
我在每台机器上都遇到了许多这样的错误。每台机器都不一样。我不能只卸载 32 位冲突的软件包,升级然后重新安装 32 位软件包。实在是太多了。

我已尝试过:
yum upgrade -x '*.i686'但没有成功。

我怎样才能克服这些错误集体

更新:
这是其中一条错误消息。

事务检查错误:
文件 */path/to/file/*printers.pyc 在尝试安装 libstdc++-4.8.5-36.el7_6.2.i686 和 libstdc++-4.8.5-36.el7_6.2.x86_64 时发生冲突

请注意,我为 32 位和 64 位软件包提供了相同的版本。
yum provides printers.pyc 返回已安装的 32 位和 64 位软件包:

libstdc++-4.8.5-36.el7.i686 和 libstdc++-4.8.5-36.el7.x86_64

每台机器都不同。我不能只卸载 32 位 libstdc++ 就万事大吉了。另一台机器会有不同的冲突。

我需要编写脚本。我必须处理整个已安装的 RPM 集,然后卸载一些 onsie-twosie 软件包。

是否可以先只升级 64 位软件包,然后再升级 32 位软件包?这样有帮助吗?

答案1

yum希望这些库版本匹配。libstdc++例如,必须为 32 位和 64 位安装完全相同的版本号。

您建议删除 32 位版本然后重新安装它们,这个建议行不通;yum如果它们的版本号不完全相同,将不允许您重新安装这些 32 位版本。

发生的情况是,您的存储库中可能有可用的更新libstdc++.x86_64,但又没有。libstdc++.i686

有多种策略可以解决这个问题:

  • 尝试卸载你的 32 位软件包(按照@MichaelHampton 的建议)
  • 调查为什么没有两个版本的升级可用(启用/禁用存储库)
  • 告诉yum在更新时忽略一些包...

答案2

这太糟糕了。我不得不列出所有有冲突的软件包。通过强制删除 32 位软件包,并且不删除依赖项。
接下来,我必须升级所有 64 位软件包。
之后,我可以重新安装 32 位软件包。

不知何故,我们的 kickstart 过程搞砸了这一切。当我们升级到下一个版本的 Red Hat 时,我们使用了不同的 kickstart 映像和安装后脚本。这解决了以后的问题。

我们仍然不知道它一开始是怎么搞砸的。

相关内容