我运行了许多 CentOS 服务器。我最近偶尔会这样做,yum update但这在少数服务器上失败了。在大多数情况下,我已经能够通过以下方式前进:
# yum clean all
# rm -f /var/lib/rpm/__db*
# rpm --rebuilddb
# yum update
Run Code Online (Sandbox Code Playgroud)
但是在一台服务器上,yum clean命令挂起。我试过运行:
# yum -v --noplugins clean all
Run Code Online (Sandbox Code Playgroud)
但我根本没有输出。百胜只是挂起,如果我让它在那里坐几个小时,不使用任何 CPU,只是停止。正在做
# strace -f yum -v --noplugins clean all
Run Code Online (Sandbox Code Playgroud)
产生相当多的输出,但随后停止:
...
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
Run Code Online (Sandbox Code Playgroud)
在这一点上,我感觉卡住了。这是一个生产服务器,所以我不想把它吹走,甚至不想把所有 yum 信息都吹走。除了 yum 的东西,服务器工作正常。
小智 11
我有同样的问题,我所有的 yum 命令都挂了。
我运行了以下命令
rm /var/lib/rpm/__db*
rm /var/lib/rpm/.rpm.lock
rm /var/lib/rpm/.dbenv.lock
Run Code Online (Sandbox Code Playgroud)
所以结合上面的一些评论和答案。
小智 4
在我的 Redhat 7.2 上,这有助于运行 yum 命令。
rm /var/lib/rpm/.dbenv.lock
Run Code Online (Sandbox Code Playgroud)