Eu tive o mesmo problema depois de instalar python3.4 com checkinstall (em vez de python3.5 para electrometro )
Motivo pelo qual esse problema ocorre
Eu descobri por que esse problema ocorreu em primeiro lugar.
Ao criar o arquivo .deb a partir da origem do Python 3.4 com checkinstall que o instala, o nome padrão do pacote configurado por checkinstall é " python ".
Como conseqüência, checkinstall desinstala o pacote chamado python antes de instalar o novo usando dpkg !! Este pacote já existe no Ubuntu. Está basicamente ligado ao python2! Por alguma razão, espero, eu acho que dpkg tenta remover a versão do python que você está instalando, ou seja, python3.4 no meu caso, mas falha. É por isso que o python2 ainda está instalado. Mas dpkg ainda acredita que o pacote " python " foi removido e substituído pelo novo instalado (python3.4).
O arquivo / var / lib / dpkg / status foi editado de acordo. No meu caso, aqui está a atualização relacionada a esta instalação:
Pacote: python
Status: deinstall ok instalado
Prioridade: extra
Seção: checkinstall
Tamanho instalado: 167520
Mantenedor: root @ laptop
Arquitetura: amd64
Versão: 3.4.3-1
Fornece: python
Descrição: Pacote criado com o checkinstall 1.6.2 '
Como você pode ver em negrito, o nome do pacote é " python " e o pacote foi " deinstall " antes de ser instalado novamente .
Assim, dpkg acha que " python " (python2!) não existe mais e sugere que você remova tudo o que for dependente quando você chamar apt-get -f install !
Solução para evitar esse problema:
Basta escolher um nome "Pacote" diferente e "Fornecer" o nome ao usar o checkinstall! Por exemplo, python3.4-checkinstall para ambos.
Como resolver o problema quando já ocorreu
Para resolver essa bagunça, tenho uma solução que permite que você não precise remover todos os binários instalados manualmente, como electrometro sugeriu fazer, o que acho que pode ser perigoso.
Siga estas etapas:
- Edite manualmente o nome do pacote
python in /var/lib/dpkg/status de python para python-3.4-checkinstall por exemplo. Seja cuidadoso. O novo nome não deve ter sido usado já! Altere também "Fornece" para o novo nome.
- Use
sudo dpkg-reconfigure python-3.4-checkinstall . (Nota: dpkg-reconfigure -a como sugerido electrometro não existe mais no Ubuntu 16.04. De qualquer forma não é necessário).
- Execute
apt-get -f install que instalará o pacote python original novamente! Neste ponto você pode parar por aqui, mas se você tentar sudo dpkg-query -L python3.4-checkinstall : o dpkg não sabe mais quais arquivos foram instalados !!! Porque o arquivo /var/lib/dpkg/info/python3.4-checkinstall.list não existe! O arquivo /var/lib/dpkg/info/python.list foi substituído por apt-get -f install . Veja a documentação Debian para mais informações sobre dpkg . Para resolver este problema, você deve fazer o passo 4.
- Reinstale o python3.4 do zero usando o checkinstall, mas sem esquecer de alterar o nome do "Pacote" e o nome "Fornecer" como sugerido anteriormente! Use o mesmo nome da etapa 1. Não é necessário excluir os binários manualmente antes de fazer isso. O objetivo desta etapa é ter uma instalação limpa do python3.4 e ser capaz de desinstalá-lo usando o arquivo .deb recém-criado.
E é isso! Tudo deve estar limpo agora. Na verdade, eu corri o passo 3 antes do passo 2, mas deve ser mais limpo fazer isso dessa maneira.
Para informações, a etapa que usei para instalar o python3.4 a partir do pacote de origem usando o checkinstall é o seguinte:
- No diretório de origem, execute
./configure .
- Executar
make
- Executar
sudo checkinstall
-
Etapa mais importante . Neste ponto, eles perguntam se você deseja modificar qualquer campo antes de instalar. Modifique "Package" e "Provides" de "python" para um nome exclusivo diferente (como "python3.4-checkinstall" como sugeri).
Espero que ajude!
Felicidades,
Nicolas