centos yum update更新异常终止修复

缘起

有一个限制的腾讯云的vps,放在那做了个简单的ip监测,cpu占用很高。

前几天centos 7.7 release了,yun update一下几百个包需要更新,由于在高铁上连上去yum update的,这下问题来了o( ̄︶ ̄)o

update了一半,连接断开了,再次连上去yum update就一直报重复包以及依赖解决不了的问题。

错误:软件包:glibc-common-2.17-260.el7_6.6.x86_64 (@updates)          需要:glibc = 2.17-260.el7_6.6
          正在删除: glibc-2.17-260.el7_6.6.i686 (@updates)
              glibc = 2.17-260.el7_6.6
          更新,由: glibc-2.17-292.el7.i686 (os)
              glibc = 2.17-292.el7 您可以尝试添加 --skip-broken 选项来解决该问题** 
              发现 43 个已存在的 RPM 数据库问题, 'yum check' 输出如下:
              1:NetworkManager-libnm-1.18.0-5.el7_7.1.x86_64 是 1:NetworkManager-libnm-1.12.0-10.el7_6.x86_64 的副本
              audit-libs-2.8.5-4.el7.x86_64 是 audit-libs-2.8.4-4.el7.x86_64 的副本
              32:bind-libs-9.11.4-9.P2.el7.x86_64 是 32:bind-libs-9.9.4-74.el7_6.2.x86_64 的副本
              32:bind-license-9.11.4-9.P2.el7.noarch 是 32:bind-license-9.9.4-74.el7_6.2.noarch 的副本
              cryptsetup-libs-2.0.3-5.el7.x86_64 是 cryptsetup-libs-2.0.3-3.el7.x86_64 的副本
              dracut-033-564.el7.x86_64 是 dracut-033-554.el7.x86_64 的副本
              e2fsprogs-libs-1.42.9-16.el7.x86_64 是 e2fsprogs-libs-1.42.9-13.el7.x86_64 的副本
              elfutils-libelf-0.176-2.el7.x86_64 是 elfutils-libelf-0.172-2.el7.i686 的副本
              elfutils-libs-0.176-2.el7.x86_64 是 elfutils-libs-0.172-2.el7.i686 的副本
              glib2-2.56.1-5.el7.x86_64 是 glib2-2.56.1-4.el7_6.i686 的副本
              glibc-2.17-292.el7.x86_64 是 glibc-2.17-260.el7_6.6.i686 的副本
              glibc-common-2.17-292.el7.x86_64 是 glibc-common-2.17-260.el7_6.6.x86_64 的副本
              glibc-devel-2.17-292.el7.x86_64 有缺少的需求 glibc-headers = ('0', '2.17', '292.el7')1:grub2-common-2.02-0.80.el7.centos.noarch 是 1:grub2-common-2.02-0.76.el7.centos.1.noarch 的副本
              1:grub2-pc-2.02-0.80.el7.centos.x86_64 有缺少的需求 grub2-tools = ('1', '2.02', '0.80.el7.centos')1:grub2-tools-extra-2.02-0.80.el7.centos.x86_64 有缺少的需求 grub2-tools = ('1', '2.02', '0.80.el7.centos')1:grub2-tools-minimal-2.02-0.80.el7.centos.x86_64 是 1:grub2-tools-minimal-2.02-0.76.el7.centos.1.x86_64 的副本
              httpd-tools-2.4.6-90.el7.centos.x86_64 是 httpd-tools-2.4.6-89.el7.centos.1.x86_64 的副本
              kernel-headers-3.10.0-1062.1.1.el7.x86_64 是 kernel-headers-3.10.0-957.27.2.el7.x86_64 的副本
              kernel-tools-libs-3.10.0-1062.1.1.el7.x86_64 是 kernel-tools-libs-3.10.0-957.27.2.el7.x86_64 的副本
              langtable-0.0.31-4.el7.noarch 是 langtable-0.0.31-3.el7.noarch 的副本
              langtable-data-0.0.31-4.el7.noarch 是 langtable-data-0.0.31-3.el7.noarch 的副本
              libblkid-2.23.2-61.el7.x86_64 是 libblkid-2.23.2-59.el7_6.1.i686 的副本

折腾过程

采用yum-util清理重复包

网上查了一波后,发现可以使用yum的一个工具清理重复包,主要的步骤如下:

    # 安装工具
    yum install yum-utils
    yum clean all    
    # 清理重复包
    yum-complete-transaction --cleanup-only
    package-cleanup --cleandupes

一般情况下,通过上面的命令,就可以解决冲突问题了,但是在我这依然是不行的,glib和glibc-common这两个包依然是冲突的,怎么都解决不了。

采用手动下载安装对应软件包版本解决

1.下载glibc 260版本

http://pkgs.org/download/libc.so.6 下载对应的centos系统的包,注意架构选择

同时下载他的依赖(libfreebl3.so

http://pkgs.org/centos-6-rhel-6/centos-rhel-i386/nss-softokn-freebl-3.12.9-11.el6.i686.rpm.html 下载对应的centos系统的包,注意架构选择

2.安装 rpm 包 并查看安装后的版本

    rpm -ivh nss-softokn-freebl-3.44.0-5.el7.i686.rpm glibc-2.17-292.el7.i686.rpm --force

注意:需要增加--force参数,否则安装不成功

经过上面的折腾,再次yum update已经不会报错了,问题顺利解决。

总结

前几天刚好看到个文章,讲apt、dnf包管理是比yum好的,尤其是冲突、依赖解决方面,现在看来确实是yum不太好用了。

好在未来centos的包管理也是向dnf迁移了好像。

参考文档

https://blog.csdn.net/u012908433/article/details/80254343

https://blog.csdn.net/qq_38695182/article/details/85295105

https://my.oschina.net/adailinux/blog/1647539


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。