Erro ao remover um pacote que não está instalado

0

Eu sempre recebo uma notificação dizendo: o Ubuntu enfrentou um erro interno. Após a verificação, existe um pacote não totalmente instalado ou removido libapache2-mod-wsgi-py3 .

Quando eu corro: sudo apt-get upgrade eu recebo:

dpkg: error processing package libapache2-mod-wsgi-py3 (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 libapache2-mod-wsgi-py3
E: Sub-process /usr/bin/dpkg returned an error code (1)

Eu tentei usar sudo apt autoremove . Mas não o removeu completamente Eu também fiz: sudo dpkg --remove libapache-mod-wsgi-py3 Quando tento remover o pacote, recebo isto:

dpkg: warning: ignoring request to remove libapache-mod-wsgi-py3 which isn't installed

Mas ainda continua tendo o mesmo erro. Como consertar isso?

    
por SineCo 26.04.2018 / 17:54

1 resposta

0

Etapa 1: interromper a execução do serviço apache2

Antes de desinstalar, insira este comando no Terminal / outra CLI:

sudo systemctl stop apache2.service

Etapa 2: remover binários de pacote, arquivos de configuração de todo o sistema e dependências órfãs

Para remover completamente o próprio pacote, juntamente com os arquivos de configuração de todo o sistema e todas as dependências que foram exigidas pelo pacote, mas não são mais necessárias, execute:

sudo apt-get purge --auto-remove <packagename>

Explicação: purge faz o mesmo que apt-get remove --purge ; ele se livra do próprio pacote e dos arquivos de configuração associados. É como um passo acima de apt-get remove , que exclui apenas os binários. --auto-remove faz o mesmo que apt-get autoremove ; ele se livra de dependências órfãs.

Desculpe eu não te dei esse comando específico para usar nos comentários, mas é perfeitamente correto fazer tudo usando comandos separados ao invés de um único comando, já que as mesmas ações são executadas. No seu caso específico, desde que você já tenha feito remove --purge , você pode simplesmente executar a parte autoremove agora com sudo apt autoremove e isso deve cuidar do material que remove --purge não foi excluído. O caminho de entrada única é um pouco mais rápido.

Alternativamente, se você quiser ser seletivo sobre quais dependências serão removidas , você pode se livrar do --auto-remove flag (executando sudo apt-get purge <packagename> ) e seguir as etapas que eu encontrei deste resposta incrível para criar facilmente uma espécie de desinstalador de dependência personalizado. O comando a seguir lista todas as dependências de pacotes e, em seguida, os pipes listados em comandos individuais apt-get remove , que são todos enviados para um script de shell que você pode abrir em um editor de texto e modificar conforme necessário. Então você acabou de executar o script de shell assim que estiver satisfeito com ele. O comando é:

apt-cache depends <packagename>|awk '{print "sudo apt-get remove "$NF}' >pg_remove.sh

O arquivo pg_remove.sh é salvo no seu diretório pessoal (obviamente, você pode adicionar um caminho antes do nome do arquivo de saída se quiser salvá-lo em outro lugar). Para executar o script, execute bash pg_remove.sh (novamente, se o arquivo de saída não estiver em seu diretório inicial, modifique esse comando para incluir o caminho para seu local).

Etapa 3: remova os arquivos de configuração do usuário

Em seguida, você precisa remover manualmente os arquivos de configuração específicos do usuário armazenados em seu diretório pessoal. Eles podem estar em seu próprio diretório e / ou em ~ / .config, ~ / .cache, ~ / .local.

Primeiro, procure os arquivos que contêm o nome do pacote em ~/.config e remova-os. Você pode usar ls -a ~/.config ou ls -A ~/.config para ver todo o conteúdo da sua casa, incluindo arquivos / pastas ocultos. Se você estiver usando o Nautilus para fazer isso, verifique se ativou a opção para exibir arquivos ocultos ( View>Show Hidden Files ). Em seguida, exclua-os usando rm ou Nautilus.

Procure também em sua pasta pessoal por um diretório com o nome do pacote (ou algo parecido com o nome do pacote - pode não ser exatamente o mesmo). Ele provavelmente ficará oculto por padrão e provavelmente começará com um "." - se existir. Eu não sei muito sobre o apache, então não tenho certeza se esse diretório estará lá, ou como seria. De qualquer forma, se existir, remova-o também!

Além disso, verifique em ~/.cache e ~/.local/share para um diretório nomeado após o pacote.

Referências para as Etapas 2 e 3: Como você pode remover completamente um pacote? , Qual é a maneira correta de remover completamente um aplicativo? , Como remover completamente os arquivos de configuração

Possível reinstalação futura

Este pacote pode ter bibliotecas que você realmente precisa no futuro e talvez seja necessário reinstalá-lo. O Ubuntu vem com o libapache2-mod-wsgi-py3 instalado, que é como uma versão padrão, então meu palpite é que ele não funcionaria bem com qualquer versão do Python que você estivesse usando. Se você quiser saber mais, confira a saída de which python e ps -fA | grep python ... Se um conflito com a versão Python era de fato o problema, então esta questão e este aborda como você pode instalar corretamente o mod-wgsi via pip (o pacote pip instala é algo chamado mod_wgsi).

    
por Emily 26.04.2018 / 21:21