Como corrigir atualizações sinápticas quebradas: "O pacote está em um estado inconsistente muito ruim"

15

Eu tenho um Dell Mini9 executando o Ubuntu 8.10. Um dia, tive a brilhante idéia de ver se eu poderia instalar uma pilha LAMP. Eu tive problemas para instalar o MySQL 5.0. Não recordo o erro, mas desde que todas as tentativas de executar o update-manager, synaptic ou apt-get falham com um erro sobre o mysql-server-5.0: "O pacote está em um estado inconsistente muito ruim".

Eu tentei apt-get remove mysql-server-5.0e também, installmas sem sorte. Ambos falham com o mesmo erro abaixo. Como posso consertar isso?

$ sudo apt-get remove mysql-server-5.0
Lendo listas de pacotes ... Concluído
Construindo árvore de dependência       
Lendo informações do estado ... Concluído
Os seguintes pacotes foram instalados automaticamente e não são mais necessários:
  dhcdbd libisc32
Use 'apt-get autoremove' para removê-los.
Os seguintes pacotes serão REMOVIDOS:
  mysql-server-5.0
0 atualizado, 0 recém-instalado, 1 para remover e 164 não atualizado.
1 não totalmente instalado ou removido.
Após esta operação, 85,4 MB de espaço em disco serão liberados.
Deseja continuar [S / n]? 
dpkg: erro ao processar o mysql-server-5.0 (--remove):
 O pacote está em um estado inconsistente muito ruim - você deve
 reinstale-o antes de tentar uma remoção.
Foram encontrados erros durante o processamento:
 mysql-server-5.0
E: O subprocesso / usr / bin / dpkg retornou um código de erro (1)
Spoulson
fonte
Considere usar <pre> para saída da tela onde o destaque de sintaxe não é necessário.
John Oxley

Respostas:

19

Nenhuma das outras respostas funcionou para mim no Maverick.

No meu caso, achei que funcionou:

sudo rm /var/lib/dpkg/info/flashplugin-nonfree.prerm

sudo dpkg --remove --force-remove-reinstreq flashplugin-nonfree

(substituindo "flashplugin-nonfree" pelo nome do pacote quebrado e substituindo "prerm" pelo tipo de script que falhou - no meu caso, foi "postrm", o script de pós-remoção.)

E eles dizem que o Ubuntu é fácil de usar! resmungar resmungar

Robin Green
fonte
--purge é melhor descartar deps quebrados
stepancheg 5/11
1
Estou procurando há horas uma solução para um problema semelhante, e este é o único que funcionou. Obrigado.
LukeGT
6

Eu tive exatamente o mesmo problema com uma instalação do mysql. Você precisa limpar a embalagem. Simplesmente remover um pacote não remove os arquivos de configuração que vieram com ele.

Além disso, vou me referir ao mysql-server-5.0 , mas percebo que há um pacote wrapper mysql-server que sempre aponta para a versão mais recente. ou seja, se você pedir para instalar o mysql-server , o apt-get deve dizer que depende do mysql-server-5.0 e instalar os dois. Se você possui o pacote mysql-server no sistema, certifique-se de que o mesmo desapareceu antes de tentar reinstalar.

  • Verifique se o servidor mysql (mysqld) não está em execução. Se for, reduza-o:

    sudo /etc/init.d/mysqld stop

  • Verifique se algum pacote depende do mysql-server-5.0:

    sudo apt-cache rdepende o mysql-server-5.0

    Se o fizerem, você precisará usar a opção --force para desinstalar.

  • Limpe o pacote (inclua a opção --force , dependendo do item 2)

    sudo apt-get --purge remove --force mysql-server-5.0

  • Verifique se os arquivos do instalador também foram limpos executando

    sudo apt-get autoclean
    sudo apt-get autoremove

  • Instale o pacote do servidor novamente

    sudo apt-get install mysql-server-5.0

Esperamos que isso resolva seu problema. No entanto, o pacote ainda pode estar quebrado, se você tiver feito alterações nos arquivos que vieram do pacote mysql-common .

O mysql-common é o pacote base usado pelos componentes do cliente e do servidor. Se as coisas ainda não estiverem funcionando, tente reinstalar este pacote. Definitivamente haverá pacotes que dependem disso; verifique usando o item 2 acima. Limpe o mysql-server antes de reinstalar o mysql-common . Além disso, não se esqueça de reinstalar o mysql-common , caso contrário, seu sistema estará muito danificado.

Nagul
fonte
1

Você pode aptitudetentar, que tem um melhor tratamento das dependências:

sudo aptitude remove mysql-server-5.0
innaM
fonte
O erro aqui é dpkgdo tipo, então eu não acho aptitudeque necessariamente se sairia melhor. Não me interpretem mal, eu sou todo para aptitudecima apt-get, mas no final do dia, ambos mão o âmago da questão real sobre a dpkg(o que você vai ser feliz ao ouvir foi originalmente implementado em Perl).
Telemachus
;-) Eu apenas pensei que valeria a pena tentar.
innaM
0

Experimentar

sudo dpkg -i reconfigure mysql-server-5.0
sudo apt-get remove --force mysql-server-5.0

Se o seu outro pacote que está quebrado, tente apt-get remove --forceaquele pacote também.

John Oxley
fonte
0

O dpkgerro que você possui sugere que o problema ocorre quando você dpkgestá tentando remover o pacote. (No final do dia, apt-gete Synapticassim por diante, entregue o trabalho real para dpkg.)

Você já tentou fazer exatamente o que a mensagem diz e reinstalar primeiro?

apt-get install --reinstall mysql-server-5.0

Por mais bobo que possa parecer, se dpkgé asfixia durante o processo de remoção (porque algum arquivo que é suposto para remover desapareceu no ínterim), em seguida, reinstalar e , em seguida, a remoção pode às vezes ajuda. Certifique-se de que mysqlnão esteja em execução antes de tentar instalá-lo ou removê-lo, como sugere o nagul .

Telêmaco
fonte
0

dpkg -r --force-remove-reinstreq <package> remove um pacote sem verificar se requer reinstalação.

Depois disso, você poderá reinstalar o pacote com o seu gerenciador de pacotes preferido.

Jaime Soriano
fonte
0

Eu tive esse problema com o carteiro. /Etc/init.d/mailman excluído com

rm /etc/init.d/mailman

corrigido :)

Stéphan Champagne
fonte