Yum 说某个软件包已安装,但未安装,并且它阻止安装其他软件包

Yum 说某个软件包已安装,但未安装,并且它阻止安装其他软件包

我正在尝试安装新软件包 ( glibc-static),但收到以下错误

---> Package nss-softokn-freebl.i686 0:3.14.3-18.el6_6 will be installed
--> Finished Dependency Resolution
Error: Package: glibc-2.12-1.149.el6.i686 (CentOS-OS)
          Requires: glibc-common = 2.12-1.149.el6
          Installed: glibc-common-2.12-1.149.el6_6.5.x86_64 (@updates)
              glibc-common = 2.12-1.149.el6_6.5
          Available: glibc-common-2.12-1.149.el6.x86_64 (CentOS-OS)
              glibc-common = 2.12-1.149.el6
Error: Package: glibc-devel-2.12-1.149.el6.i686 (CentOS-OS)
          Requires: glibc-headers = 2.12-1.149.el6
          Installed: glibc-headers-2.12-1.149.el6_6.5.x86_64 (@updates)
              glibc-headers = 2.12-1.149.el6_6.5
          Available: glibc-headers-2.12-1.149.el6.x86_64 (CentOS-OS)
              glibc-headers = 2.12-1.149.el6
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

请注意,glibc-common-2.12-1.149.el6_6.5.x86_64glibc-common-2.12-1.149.el6.x86_64不匹配。但glibc-common-2.12-1.149.el6_6.5.x86_64被列为可用。我想 yum 会很乐意安装它。不幸的是,yum 没有安装它。

所以我尝试自己做。

~ $> sudo yum install glibc-common-2.12-1.149.el6
Loaded plugins: fastestmirror, presto
Setting up Install Process
Loading mirror speeds from cached hostfile
 * epel: mirror.us.leaseweb.net
Package matching glibc-common-2.12-1.149.el6.x86_64 already installed. Checking for update.
Nothing to do

那行不通。它认为它已经安装了。

所以我尝试重新安装它。

~ $> sudo yum reinstall glibc-common-2.12-1.149.el6
Loaded plugins: fastestmirror, presto
Setting up Reinstall Process
Loading mirror speeds from cached hostfile
No Match for argument: glibc-common-2.12-1.149.el6
Package(s) glibc-common-2.12-1.149.el6 available, but not installed.
Nothing to do

我该如何解决这个问题?

答案1

RPM DB 很混乱。我的建议是,以前遇到过这种情况,先rpm -e --justdb安装较新的“重复”软件包,然后再安装yum upgrade该软件包,然后rpm --rebuilddb只是因为我有点偏执。完成前两个步骤后,假设您的存储库正确同步,您应该能够安装较新的软件包。您可能想yum clean all在之后rpm -e --justdb确定这一点 - 并确保您指定了--justdb,否则您可能会对您的系统做各种坏事。

答案2

弄乱 RPM 数据库并没有产生任何特别好的结果。

我最终注意到有些glibc包裹是i686,有些是x86_64。例如:

Package: glibc-2.12-1.149.el6.i686 (CentOS-OS)
    Requires: glibc-common = 2.12-1.149.el6
    Installed: glibc-common-2.12-1.149.el6_6.5.x86_64

我不喜欢这样,我想百胜也不喜欢这样。

跑步

yum downgrade glibc glibc-headers glibc-common glibc-devel

将所有包引入同一架构 ( x86_64)。然后,

yum install glibc-static

就像魅力一样。

答案3

我能够通过手动将 rpm 下载到系统(注意,您需要拥有所有依赖的 rpm)并将它们保存到文件夹并运行来解决类似的问题:

yum localupdate /文件夹位置/*.rpm

我的问题围绕着从我指向的存储库获取 RPM 时发现的不一致问题。虽然症状与您所看到的完全一样,所以这也可能对您有用。

相关内容