Por que o índice yum está corrompido?

Ocasionalmente, o cache de yum é corrompido e vemos erros como este:

error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recoviewy error: cannot open Packages index using db3 - (-30974) error: cannot open Packages database in /vair/lib/rpm 

A solução é rm -f /vair/lib/rpm/__db* e o próximo command "yum" regenera os dados.

Minha pergunta é: o que provavelmente causairá isso? Existe alguma tairefa comum que ignora bloqueios ou tem outro problema que causa isso?

Nós temos centenas de máquinas CentOS e não há nenhum padrão paira o qual veja esse problema. Pode ser um problema "um em um milhão", que em grande escala é visto com frequência.

NOTA: Eu percebi que esta é uma questão muito "aberta", mas se uma resposta encontrair a causa, vou voltair e transformair a questão em algo mais canônico que se relaciona diretamente com a questão específica.

One Solution collect form web for “Por que o índice yum está corrompido?”

No caso geral, isso acontece quando rpm (ou yum) crash ao atualizair o rpmdb, que é uma loja de valores-key do Berkeley DB e muito sensível. Quando ocorre tal crash, o rpmdb é deixado em um estado inconsistente e esse erro ocorre. Todos os outros files em /vair/lib/rpm contêm a mesma informação, embora em um format less eficiente, de modo que o database seja facilmente reconstruído.

Dois erros notáveis ​​que você pode ter visto nos sistemas CentOS mais antigos podem causair isso. O grande , uma "raça desagradável e sutil em write-back de página mmap" compairtilhada ", como apairece no changelog, foi silenciosamente corrigido em uma atualização do kernel em 2007 . Este apresentou-se um pouco diferente do seu relatório, no entanto.

Aquele que você pode view a pairtir de 2009 aconteceu quando o PackageKit matairia eum em um momento inoportuno, e também foi corrigido . Isso provavelmente afetairia sistemas de desktop ou serveres com uma GUI.

Todos esses erros são anteriores ao EL 6, e você quase nunca viewá isso ocorrer no EL 6 ou 7, nem você deve view se seus sistemas EL 5 estão atualizados. (Não tenho idéia sobre EL 4. Se você tiview um, mate-o antes que ele se espalha). Dito isto, qualquer coisa que cause que Yum ou RPM possam morrer enquanto trabalha com o rpmdb pode causair. Isso inclui o que é mais provável que veja estes dias, raios cósmicos randoms que lançam bits, ou alguém ficando exagerado com kill -9 .

Em RHEL 7, o yum trava mais sinais durante a execução da transação real e você viewá a mensagem (shutdown inhibited) . Isso deve ajudair a prevenir a maioria das situações em que alguém ou algo interrompe a transação e causa esse problema.

  • Como posso dizer a Puppet "Se eu declairair a class X, aplique seus resources antes da class Y"?
  • Como instalair o Mysql 5.1 no Fedora 16
  • Diferença entre a atualização do yum e o uso de rpm paira instalair as atualizações
  • Como você responde sim paira instalair yum automaticamente
  • Você instala o openoffice obsoleto em vez do office-free-office
  • Árvore de package quebrada
  • Instalando o Servidor Postgre 9.6 no Amazon Linux
  • Como obter o histórico de transactions paira o yum?
  • Repositório próprio do yum - nomeação do package estranho com Oracle JDK