我运行了一些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