“yum clean”挂起 – 接下来要做什么?

我运行了一些CentOS服务器。 我最近偶尔做yum update但是在less数服务器上失败了。 在大多数情况下,我可以通过这样做前进:

 # yum clean all # rm -f /var/lib/rpm/__db* # rpm --rebuilddb # yum update 

但是,在一台服务器上, yum clean命令挂起。 我试过跑步了:

 # yum -v --noplugins clean all 

但我根本没有输出。 Yum只是挂起来,如果我放了它,不用任何cpu,就停下来几个小时。 干

 # strace -f yum -v --noplugins clean all 

产生了相当多的输出,但随后停止:

 ... stat64("/var/lib/rpm/__db.003", {st_mode=S_IFREG|0644, st_size=450560, ...}) = 0 open("/var/lib/rpm/__db.003", O_RDWR|O_LARGEFILE) = 4 fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 mmap2(NULL, 450560, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0) = 0xb6b34000 close(4) = 0 stat64("/var/lib/rpm/Packages", {st_mode=S_IFREG|0644, st_size=14938112, ...}) = 0 open("/var/lib/rpm/Packages", O_RDONLY|O_LARGEFILE) = 4 fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 read(4, "\0\0\0\0\1\0\0\0\0\0\0\0a\25\6\0\10\0\0\0\0\20\0\0\0\10\0\0k\t\0\0"..., 512) = 5 12 close(4) = 0 open("/var/lib/rpm/Packages", O_RDONLY|O_LARGEFILE) = 4 fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 fstat64(4, {st_mode=S_IFREG|0644, st_size=14938112, ...}) = 0 futex(0xb6b7bd1c, FUTEX_WAIT, 1, NULL 

此时我感觉卡住了。 这是一个生产服务器,所以我不想把它吹走,甚至吹走所有的百胜信息。 除了百胜东西,服务器工作正常。

我有同样的问题,我所有的yum命令都挂了。

我运行以下命令

 rm /var/lib/__db* rm /var/lib/.rpm.lock rm /var/.dbenv.lock 

所以上面的一些评论和答案的组合。

这不是一个直接的答案,但如果没有其他答案的帮助,那么我会检查命令package-cleanup

所有build议的命令都是用来处理RPM数据库的,但可能是某些已安装软件包的关系中有些东西被破坏了。

man package-cleanup

 DESCRIPTION package-cleanup is a program for cleaning up the locally-installed RPMs. EXAMPLES List all dependency problems: package-cleanup --problems List all packages that are not in any Yum repository: package-cleanup --orphans 

我在第二个例子中开始使用这个命令,之前我已经使用过它,它解决了我在一个与yum clean有关的CentOS机器中遇到的一些奇怪的问题。

在我的Redhat 7.2上,这有助于运行yum命令。

  rm /var/lib/rpm/.dbenv.lock