Назад | Перейти на главную страницу

"Yum clean" зависает - что дальше попробовать?

Я запускаю несколько серверов 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