Quero atualizar do Ubuntu 16.04.5 LTS para 18.04, então executei sudo do-release-upgrade
. Depois de baixar e extrair bionic.tar.gz
, recebo:
Can not upgrade
Your python3 install is corrupted. Please fix the '/usr/bin/python3'
symlink.
Eu vi como corrigir "a instalação do python está corrompida"? e por isso sudo ln -sf /usr/bin/python3.6 /usr/bin/python3
pensei que seria um problema semelhante. Mas isso não funcionou (ainda a mesma mensagem de erro).
Eu tenho algumas versões python:
$ ls /usr/lib | grep python
python2.7
python3
python3.5
python3.6
$ update-alternatives --display python3
python3 - auto mode
link best version is /usr/bin/python3.6
link currently points to /usr/bin/python3.6
link python3 is /usr/bin/python3
/usr/bin/python3.5 - priority 1
/usr/bin/python3.6 - priority 2
Como faço para corrigir python3
?
upgrade
python3
do-release-upgrade
mRcSchwering
fonte
fonte
Respostas:
Você precisa usar a versão padrão do Python 3 para 16.04. Isso é 3,5 , não 3,6. Então corra:
Se isso não funcionar, tente reinstalar o
python3
pacote.By the way,
update-alternatives --display python3
deve dar-lheupdate-alternatives: error: no alternatives for python3
. Versões diferentes do Python não são alternativas no Ubuntu.fonte
Acabei de encontrar esse problema no Pop! _OS 18.04, tentando atualizar para o 18.10, e acontece que o problema estava no link simbólico para
/usr/bin/python
e não para/usr/bin/python3
. Eu tinha/usr/bin/python3.6
configurado como alternativa parapython
(nãopython3
) e, quando mudei isso, poderia executardo-release-upgrade
conforme o esperado.Desejo que a mensagem de erro seja apontada
python
e nãopython3
.Antes, com o problema:
Corrigi da seguinte maneira:
Veja também este comentário abaixo, que descreve uma solução mais precisa que também explica melhor o que está acontecendo e como corrigi-lo.
fonte
update-alternatives --remove-all python
foi definitivamente um exagero desnecessário: Tudo o que você precisava fazer era usarupdate-alternatives --config python
a terpython
ponto para o mais recentepython2.*
(por exemplopython2.7
), então useupdate-alternatives --config python3
a terpython3
ponto para especificamentepython3.6
- que é o padrão Python 3 versão para 18,04.gnome-terminal
,update-manager
, etc. Em vez disso usar ambientes virtuais (documentação aqui e aqui )Observei essa mensagem de erro no Windows 10 1903 executando o WSL Ubuntu quando eu queria atualizar do 16.04 LTS para o 18.04 LTS .
Depois de
do-release-upgrade
ter falhado, troqueipython
alternativas para todas as opções oferecidasupdate-alternatives --config python
e executei o comando upgrade novamente. Isso não ajudou.Então eu verifiquei o arquivo de log
/var/log/dist-upgrade/main.log
que continha as linhasPortanto, embora a mensagem de erro mencione python3 , o problema é sobre python2 .
O script de atualização verifica se há
/usr/bin/python
links para/usr/bin/python2
, veja o código-fonteDistUpgrade/DistUpgradeController.py
aqui: ubuntu launchpadPortanto, uma solução é remover completamente o python do sistema alternativo e adicionar o link manualmente, conforme descrito na resposta mais popular.
Se você não deseja remover o python do sistema alternativo, basta alterar o link apenas durante o processo de atualização:
Isso funcionou para mim.
Durante o processo de atualização, o link é reparado automaticamente. Portanto, quando a atualização estiver concluída, ela aponta para a entrada python no diretório de alternativas:
Editar: para obter informações completas, o problema também pode aparecer se você atualizar do 18.04 LTS para o 19.04 e a resposta também se aplicar a essa situação.
fonte
Basicamente, a solução para esse problema consiste em
/usr/bin/python
apontar para a versão correta do Python que sua versão do Ubuntu espera (por exemplo, no 16.04 era Python2.7 e no 18.04 era Python3.6).Se você possui várias versões do Python instaladas no seu sistema, pode estar usando
update-alternatives
para gerenciá-las. Não importa muito que sua alternativa padrão para Python seja a versão correta que seu sistema espera (3.6 no Ubuntu 18.04), não funcionará.A razão pela qual isso não funciona é que, ao usar
update-alternatives
,/usr/bin/python3
aponta para/etc/alternatives/python3
, e parece que não é exatamente o mesmo que/usr/bin/python3
apontar para/usr/bin/python3.6
.É por isso que a solução para esse problema geralmente consiste em parar de gerenciar as versões do Python3
update-alternatives
e/usr/bin/python3
apontar para a versão correta do Python3 que seu sistema espera.fonte
/usr/bin/python
não existe em uma instalação limpa da 18.04, mas existe se você fizer uma atualização em vez de uma instalação limpa ou instalar opython
pacote; nesse caso, deve ser Python 2.7, não 3.6. Ver PEP 394 .update-alternatives
. Isso ocorre porque o sistema operacional depende de uma determinada versão sendo instalada.