No caso geral, isso acontece quando o rpm (ou yum) falha ao atualizar o rpmdb, que é um armazenamento de valor de chave do Berkeley DB, e é muito sensível. Quando tal falha acontece, o rpmdb é deixado em um estado inconsistente e esse erro ocorre. Todos os outros arquivos em /var/lib/rpm
contêm as mesmas informações, embora em um formato menos eficiente, para que o banco de dados seja facilmente reconstruído.
Dois erros notáveis que você pode ter visto em sistemas CentOS mais antigos podem causar isso. O grande , uma "corrida desagradável e sutil em write-back de página mmap'ed compartilhado" como aparece em o changelog, foi corrigido tranquilamente em uma atualização do kernel em 2007 . Este apresentou-se um pouco diferente do que o seu relatório.
A que você pode ver a partir de 2009 aconteceu quando o PackageKit matar o yum em um momento inoportuno, e também foi corrigido . Isso provavelmente afetaria sistemas de desktop ou servidores com uma GUI.
Todos esses erros são anteriores a EL 6, e você quase nunca deve ver isso ocorrer no EL 6 ou 7, nem deve ser visto se os seus sistemas EL 5 estiverem atualizados. (Eu não tenho idéia sobre EL 4. Se você tiver um, mate-o antes que ele se espalhe.) Dito isso, qualquer coisa que cause a morte do yum ou rpm enquanto estiver trabalhando com o rpmdb poderia causar isso. Isso inclui o que você provavelmente verá nos dias de hoje, raios cósmicos aleatórios que lançam bits, ou alguém que está recebendo excesso de zelo com kill -9
.
No RHEL 7, o yum intercepta mais sinais durante a execução real da transação e você verá a mensagem (shutdown inhibited)
. Isso deve ajudar a evitar a maioria das situações em que alguém ou algo interrompe a transação e causa esse problema.