Я запускаю несколько серверов CentOS. Я недавно делал случайные yum update
но это не удалось на нескольких серверах. В большинстве случаев я смог продвинуться вперед, сделав:
# yum clean all
# rm -f /var/lib/rpm/__db*
# rpm --rebuilddb
# yum update
Однако на одном сервере yum clean
команда зависает. Я пробовал запустить:
# yum -v --noplugins clean all
но я вообще ничего не получаю. Yum просто зависает и будет сидеть там часами, если я позволю ему, не используя никакого процессора, просто остановится. Делать
# 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/rpm/__db*
rm /var/lib/rpm/.rpm.lock
rm /var/lib/rpm/.dbenv.lock
Итак, комбинация некоторых из приведенных выше комментариев и ответов.
На моем Redhat 7.2 это помогает запускать команды yum.
rm /var/lib/rpm/.dbenv.lock
Это не прямой ответ, но если ни одна из команд из других ответов не помогла, я бы проверил команду package-cleanup
.
Все предлагаемые команды предназначены для работы с базой данных 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
Я бы начал с команды во втором примере, я использовал ее раньше, и она решила некоторые странные проблемы, которые у меня были на одной из моих машин CentOS, которые были связаны с yum clean
.
Все вышеперечисленное, но также:
ps -ef | grep yum # kill off all yum processes
ps -ef | grep rpm # kill off rpm processes
Я не мог заставить что-либо из вышеперечисленного работать, пока не сделал это.
Кредит: https://cloudlinux.zendesk.com/hc/en-us/articles/115004580385-If-RPM-or-yum-processes-hangs