yum 更新失败后如何删除重复项?

yum 更新失败后如何删除重复项?

当我尝试更新 CentOS 系统上的软件包时,我可能内存不足。现在,当我尝试运行更新时,它卡住了:

Error: Package: glibc-devel-2.17-157.el7_3.5.x86_64 (@updates)
           Requires: glibc-headers = 2.17-157.el7_3.5
           Removing: glibc-headers-2.17-157.el7_3.5.x86_64 (@updates)
               glibc-headers = 2.17-157.el7_3.5
           Updated By: glibc-headers-2.17-196.el7.x86_64 (base)
               glibc-headers = 2.17-196.el7
 You could try using --skip-broken to work around the problem
** Found 75 pre-existing rpmdb problem(s), 'yum check' output follows:
audit-2.6.5-3.el7_3.1.x86_64 has missing requires of audit-libs(x86-64) = ('0', '2.6.5', '3.el7_3.1')

看起来有很多重复的软件包。我尝试使用 恢复更新,yum history undo 48但它出现了一大堆消息“降级失败:这个或那个软件包.x86-64”。所以这没有帮助。我还尝试了:

package-cleanup --cleandupes

它要求删除 50 个包,但结果是:

ERROR with transaction check vs depsolve:
systemd = 219-42.el7_4.1 is needed by (installed) systemd-sysv-219-42.el7_4.1.x86_64
systemd = 219-42.el7_4.1 is needed by (installed) systemd-sysv-219-42.el7_4.1.x86_64
openssh = 7.4p1-12.el7_4 is needed by (installed) openssh-clients-7.4p1-12.el7_4.x86_64
openssh = 7.4p1-12.el7_4 is needed by (installed) openssh-clients-7.4p1-12.el7_4.x86_64
iptables = 1.4.21-18.0.1.el7.centos is needed by (installed) iptables-services-1.4.21-18.0.1.el7.centos.x86_64
Complete!
(1, [])

我不知道如何解决这个问题。最重要的是停机时间有限,我可以定期再次安装更新(因为它正在用作服务器)。我希望有人可以建议一些步骤来解决这些依赖性问题。

uname -a
Linux host.example.com 3.10.0-123.8.1.el7.x86_64 #1 SMP Mon Sep 22 19:06:58 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

答案1

可能有些软件包已经安装,但是旧软件包尚未删除,并且“事务”尚未完成,因此您处于一种奇怪的状态,其中软件包 1 太旧而无法支持软件包 2。

我也遇到过类似的问题,但只发生在一个软件包上。它只是告诉我systemd conflicts with dracut-033-502.el7yum check还报告了许多重复的软件包)。

为了解决这个问题,我检查了 dracut 的版本:

rpm -vqa | grep dracut

...然后通过删除最高版本降级到以前的版本。这样就摆脱了冲突的软件包。从那时起:

package-cleanup --dupes

...去掉重复项,最后得到:

yum update

...更新所有内容,并纠正所有错误。

答案2

我遇到了类似的问题,重复的包不起作用sudo package-cleanup --cleandupes。相反,我使用sudo package-cleanup --cleandupes --removenewestdupesaftersudo yum upgrade可以正常工作。

相关内容