Como remover / instalar um pacote que não está totalmente instalado?

41

Eu fui instalar o bsnes outro dia e por qualquer motivo a instalação falhou. Agora, eu não posso atualizar, instalar novos pacotes, ou fazer basicamente qualquer comando do apt-get, já que todos tentam processar este pacote quebrado e falhar. A tentativa de instalar um novo pacote também acaba condenando-o ao mesmo destino. O erro que recebo é:

Setting up google-chrome-stable (33.0.1750.152-1) ...
/var/lib/dpkg/info/google-chrome-stable.postinst: 124: /var/lib/dpkg/info/google-chrome-stable.postinst: update-alternatives: not found
dpkg: error processing google-chrome-stable (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up bsnes (0.088-7) ...
/var/lib/dpkg/info/bsnes.postinst: 5: /var/lib/dpkg/info/bsnes.postinst: update-alternatives: not found
dpkg: error processing bsnes (--configure):
 subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
 google-chrome-stable
 bsnes
E: Sub-process /usr/bin/dpkg returned an error code (1)

Eu tenho procurado no Google e aqui no Ask Ubuntu, mas não encontrei uma solução de trabalho. A correção comumente sugerida é executar o seguinte:

sudo apt-get clean && sudo apt-get autoremove
sudo apt-get -f install
sudo dpkg --configure -a

Isso, no entanto, não funciona. Todos os comandos apt-get falham com o mesmo erro acima e o comando dpkg simplesmente não ajuda. A outra coisa que eles geralmente sugerem é apagá-lo via Synaptic ou na linha de comando, que também falha.

Obrigado pela ajuda

    
por Bijak 24.03.2014 / 03:42

8 respostas

19

Então, depois de mais pesquisas e de ler cuidadosamente as mensagens de erro, parece que dpkg precisou ser reinstalado.

sudo apt-get install --reinstall dpkg

O que deu a entender que esse era o problema (se alguém pesquisar e vir isso) é que update-alternatives: not found estava na mensagem de erro. Assim que o dpkg foi reinstalado, os outros pacotes passaram a ser instalados normalmente de forma automática.

    
por Bijak 25.03.2014 / 04:26
44

Para usuários avançados, use por sua conta e risco.

De acordo com a seguinte mensagem de erro:

subprocess installed post-installation script returned error exit status 127

Você pode editar /var/lib/dpkg/info/[package_name].postinst e comentar tudo (ou melhor ainda, tentar entendê-lo e identificar o problema) e, em seguida, tentar apt-get novamente.

Note que, embora nesta pergunta em particular a mensagem diga respeito à "pós-instalação", poderia ter mencionado, por ex. "pré-remoção" ou "pós-remoção" (nos casos em que a extensão do arquivo a ser editado teria sido .prerm ou .postrm ).

    
por Skippy le Grand Gourou 05.06.2015 / 09:58
32

Além daqueles que você já postou, há alguns outros comandos que podem ser úteis.

  • O Autoclean limpa o repositório local de arquivos de pacotes recuperados.

    sudo apt-get autoclean
    
  • Força a instalação / remoção de pacotes. ☠Use com cautela

    sudo apt-get --force-yes install <pkgname>
    

    e

    sudo apt-get --force-yes remove <pkgname>
    

Além disso, como sempre, você pode usar dpkg para instalar, remover e limpar pacotes.

  • Instalar

    sudo dpkg -i <pkgname>
    
  • Remover

    sudo dpkg -r <pkgname>
    
  • Eliminar

    sudo dpkg -P <pkgname>
    
por Registered User 24.03.2014 / 05:10
11

Se tudo mais falhar. O que eu fiz foi primeiro eu mudei o diretório para:

cd /var/lib/dpkg/info

então eu removi tudo com .postinst :

sudo rm *.postinst

atualize o repositório

sudo apt-get update

então tudo voltou ao normal quando eu fiz:

sudo apt-get --force-yes install openjdk-7-jre-headless
    
por Mike B 14.04.2016 / 04:39
7

Você pode remover o arquivo do pacote no diretor /var/lib/dpkg/info/ e atualizar a origem.

sudo rm /var/lib/dpkg/info/[package_name].*
sudo dpkg --configure -a
sudo apt-get update

Em seguida, reinstale o pacote sudo apt-get install [package_name]

Doc

    
por Hamed 30.05.2017 / 10:29
4

Se tudo mais falhar, você poderá remover manualmente o pacote por meio de dpkg . A execução de sudo dpkg -P bsnes deve eliminar bsnes .

    
por saiarcot895 24.03.2014 / 03:56
2

No meu caso, apt-get install -f funcionou. Eu estava instalando o mysql-workbench-community

Anteriormente tentou apt autoclean

Eu vi esse erro do dpkg devido a algumas dependências ausentes que poderiam ser corrigidas instalando no modo forçado (instalando dependências)

    
por Vikas Avnish 19.11.2016 / 11:24
0
sudo apt-get install -f --reinstall coreutils init-system-helpers

Após a execução acima, você pode instalar / atualizar / remover / limpar como de costume para todos os pacotes.

    
por Uddhav Gautam 23.02.2018 / 18:09