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, troquei python
alternativas para todas as opções oferecidas update-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 linhas
2019-09-02 20:58:08,686 DEBUG _pythonSymlinkCheck run
2019-09-02 20:58:08,687 DEBUG python symlink points to: '/etc/alternatives/python', but expected is 'python2.7' or
'/usr/bin/python2.7'
2019-09-02 20:58:08,688 ERROR pythonSymlinkCheck() failed, aborting
Portanto, 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-fonte DistUpgrade/DistUpgradeController.py
aqui: ubuntu launchpad
Portanto, 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:
# rm /usr/bin/python
# ln -sf /usr/bin/python2.7 /usr/bin/python
# do-release-upgrade
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:
$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 24 Sep 2 22:01 /usr/bin/python -> /etc/alternatives/python
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.