“yum clean” trava - o que tentar em seguida?

4

Eu corri um número de servidores CentOS. Eu estava fazendo recentemente o yum update ocasional, mas isso falhou em um punhado de servidores. Na maioria, consegui progredir fazendo:

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

No entanto, em um servidor, o comando yum clean trava. Eu tentei executar:

# yum -v --noplugins clean all

mas não obtenho nenhuma saída. Yum apenas trava, e vai ficar lá por horas, se eu deixar, não usando nenhum cpu, apenas parei. Fazendo

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

produz bastante saída, mas depois pára com:

...
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, "
# yum clean all
# rm -f /var/lib/rpm/__db*
# rpm --rebuilddb
# yum update
# yum -v --noplugins clean all
# 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, "%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%a%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%k\t%pre%%pre%"..., 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
%pre%%pre%%pre%%pre%%pre%%pre%%pre%a%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%k\t%pre%%pre%"..., 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

Neste momento estou me sentindo preso. Este é um servidor de produção, então eu não quero simplesmente explodi-lo, ou até mesmo apagar todas as informações do yum. Além do yum, o servidor está funcionando bem.

    
por Hamish Downer 25.05.2012 / 12:44

3 respostas

5

Eu tive o mesmo problema, todos os meus comandos yum estavam pendurados.

eu corri os seguintes comandos

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

Portanto, uma combinação de alguns dos comentários e respostas acima.

    
por 12.07.2017 / 07:53
1

Esta não é uma resposta direta, mas se nenhum dos comandos das outras respostas ajudou, então eu verifiquei o comando package-cleanup .

Todos os comandos propostos são para manipular o banco de dados RPM, mas pode ser que haja algo quebrado na relação de alguns pacotes instalados.

De 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

Eu começaria com o comando no segundo exemplo, usei-o antes e resolvi alguns problemas estranhos que tive em uma das máquinas do CentOS que estava relacionada a yum clean .

    
por 12.07.2017 / 19:22
1

No meu Redhat 7.2 isso ajuda a deixar executar os comandos do yum.

 rm /var/lib/rpm/.dbenv.lock
    
por 04.05.2017 / 13:21