Corrigir pacote semi-instalado

42

Estou recebendo erro ao usar o sudo apt-get upgradeseguinte:

dpkg: error processing libgfortran3:amd64 (--configure):
  package libgfortran3:amd64 is not ready for configuration
  cannot configure (current status `half-installed')
Errors were encountered while processing:
  libgfortran3:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

Parece não bloquear a instalação / atualizar outros aplicativos. Acredito que esse problema surgiu devido ao desligamento direto do meu PC enquanto o aplicativo estava sendo atualizado.

Como posso consertar isso?

Barun
fonte

Respostas:

38
sudo dpkg --remove --force-remove-reinstreq --dry-run libgfortran3:amd64

Isso é apenas uma corrida a seco. Não sei ao certo o que a remoção libgfortran3levará, mas execute e veja. Supondo que não devorará todo o sistema, execute-o novamente sem o --dry-rune, em seguida, você poderá sudo apt-get install ...os pacotes necessários.

Oli
fonte
4
Funcionou, obrigado! Para o registro, eu o executei e ele disse dpkg: warning: package is in a very bad inconsistent state; you should reinstall it before attempting a removalque baixei o pacote manualmente de packages.ubuntu.com e executei sudo dpkg -i WHERE/THE/DOWNLOADED/PACKAGE/IS. Então tudo ficou bom.
Bora M. Alper
1
No meu caso, depois de seguir estas instruções, apenas executar 'apt-get install -f' reinstalou o pacote e também corrigiu vários outros com dependências quebradas por causa disso. Este foi para o pacote libx11-dados sobre debian 7.
bchurchill
Sem --dry-run, como você disse, funcionou para mim. Obrigado!
forvas
69

Para o erro do pacote parcialmente instalado, --reinstall funcionou para mim:

sudo apt-get install --reinstall packagename 
Eric Olson
fonte
1
Sim, mas um aviso de que, após reinstalar o nome do pacote, o apt-get continuará a configurar os pacotes semi-configurados.
Cedric Cavaleiro
5
isso é mais seguro do que a resposta aceita.
precisa
sudo apt-get install --reinstal ncurses-base e depois eu corri o apt-get update sudo usando o usuário root (sudo -s), ele trabalhou apenas como aquele ...
ArifMustafa
ótimo. só isso solução resolveu o meu problema
iWizard
isso fez isso por mim. php-pear estava me dando dor de cabeça. obrigado!
pcarvalho
6
sudo apt install --reinstall packagename

Isso funciona como charme. Ele resolveu um problema que eu vinha enfrentando há meses. Meu caso foi com o pacotelibmysqlcppconn7v5

Tudo o que fiz foi correr sudo apt install --reinstall libmysqlcppconn7v5

Siech Ben
fonte
2

Se você deseja corrigir isso através da GUI, pode usar o sináptico. Synaptic é uma excelente ferramenta de gerenciamento de pacotes que costumava ser incluída em versões mais antigas do ubuntu. Para instalá-lo:

sudo apt-get install synaptic

clique em corrigir pacotes quebrados.

Mijo
fonte
O synaptic não lista o pacote na categoria quebrada :(
Barun
2

Eu tive o mesmo problema do "pacote semi-instalado" com um pacote kibana. Eu recebi o seguinte erro:

dpkg: error processing kibana (--configure):
package kibana is not ready for configuration
cannot configure (current status 'half-installed')
Errors were encountered while processing:
  kibana
E: Sub-process /usr/bin/dpkg returned an error code (1)

Se alguém ainda estiver enfrentando esse tipo de problema, tente o seguinte:

sudo rm /var/lib/dpkg/info/kibana*
cd /var/cache/apt/archives
sudo rm kibana*
apt-get --reinstall install kibana

Isso funciona para mim. Você só precisa substituir a palavra 'kibana' pelo nome do seu pacote parcialmente instalado.

Anower Perves
fonte
2

Isso deve resolver seu problema sem reinstalar o pacote.

sudo dpkg --force-remove-reinstreq --remove <package_name here>

Seguido por: sudo apt-get update

Código Geass
fonte
Por que --force-remove-reinstreq? O gerenciador de pacotes não declara que é necessária uma reinstalação. Geralmente, uma remoção regular funciona muito bem para pacotes não configurados. -1
David Foerster
É exatamente o que eu faço quando sudo apt-get remove <packageestá fora de opção e não quero reinstalar esse pacote semi-instalado. Então, eu uso --force-remove-reinstreqpara remover esses lixo eletrônico. PS: Está no Linux Mint. Duvido que ser diferente como Linux é baseado no Ubuntu ..
CodeGeass
1
O gerenciador de pacotes funciona da mesma forma em todas as distribuições baseadas no Debian (é o que dpkgsignifica, afinal), mas você não deve usar --force-*"apenas por precaução". As mensagens de erro estão lá por um motivo e não devem ser tomadas de ânimo leve por usuários inexperientes, e é por isso que você não deve sugerir --force-*opções desnecessárias para eles. Caso contrário, poderíamos apenas recomendar sempre usar --force-allou, melhor ainda, remover as --force-*opções dpkgcompletamente e fazer com que elas fossem o comportamento padrão, porque isso seria mais fácil e conveniente.
David Foerster
Ok, Admita que ... eu estava sendo mais preocupado em obter o trabalho feito que, sabendo o que e exatamente como ele é feito .. Desculpas ..
CodeGeass
Humm ... só estou vendo que a resposta aceita sugere o mesmo. Então, posso estar errado em --force-remove-reinstreqser desnecessário. Mas isso também significa que sua resposta é (quase) uma duplicata. Mais sorte da próxima vez.
David Foerster