Je veux passer d'Ubuntu 16.04.5 LTS à 18.04, alors a couru Sudo do-release-upgrade
. Après avoir téléchargé et extrait bionic.tar.gz
, je reçois:
Can not upgrade
Your python3 install is corrupted. Please fix the '/usr/bin/python3'
symlink.
J'ai vu comment réparer "l'installation de python est corrompue"? et c'est ce que j'ai fait Sudo ln -sf /usr/bin/python3.6 /usr/bin/python3
en pensant qu'il s'agirait d'un problème similaire. Mais cela n'a pas fonctionné (toujours le même message d'erreur).
J'ai quelques versions 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
Comment réparer python3
?
Vous devez utiliser la version par défaut de Python 3 pour 16.04. C'est .5 , pas 3.6. Alors courez:
Sudo ln -sf /usr/bin/python3.5 /usr/bin/python3
Si cela ne fonctionne pas, essayez de réinstaller le package python3
.
Sudo apt-get install --reinstall python3
Au fait, update-alternatives --display python3
devrait vous donner update-alternatives: error: no alternatives for python3
. Les différentes versions de Python ne sont pas des alternatives dans Ubuntu.
Je viens de rencontrer ce problème sur Pop! _OS 18.04, en essayant de passer à 18.10, et il s’avère que le problème réside dans le lien symbolique pour /usr/bin/python
et non pour /usr/bin/python3
. J'avais eu /usr/bin/python3.6
configuré comme une alternative à python
(pas python3
), et quand j'ai changé cela, alors je pouvais exécuter do-release-upgrade
comme prévu.
Je souhaite que le message d'erreur pointé à python
et non python3
.
Avant, avec le problème:
$ update-alternatives --display python
python - manual mode
link best version is /usr/bin/python3.6
link currently points to /usr/bin/python2.7
link python is /usr/bin/python
/usr/bin/python2.7 - priority 1
/usr/bin/python3.6 - priority 2
Je l'ai corrigé de cette façon:
$ Sudo update-alternatives --remove-all python
$ Sudo ln -sf /usr/bin/python2.7 /usr/bin/python
Voir aussi ce commentaire ci-dessous qui décrit une solution plus précise qui explique également mieux ce qui se passe et comment y remédier.
En gros, la solution à ce problème consiste à faire pointer /usr/bin/python
sur la bonne version de Python attendue par votre version d'Ubuntu (par exemple, Python2.7 en 16.04 et Python3.6 en 18.04).
Si plusieurs versions de Python sont installées sur votre système, vous utiliserez peut-être update-alternatives
pour les gérer. Peu importe votre alternative par défaut pour Python est la bonne version attendue par votre système (3.6 dans Ubuntu 18.04), cela ne fonctionnera pas.
La raison pour laquelle cela ne fonctionne pas est que, lorsque vous utilisez update-alternatives
, /usr/bin/python3
pointe sur /etc/alternatives/python3
, et il semble que ce ne soit pas exactement la même chose que faire /usr/bin/python3
pointer sur /usr/bin/python3.6
.
C'est pourquoi la solution à ce problème consiste souvent à cesser de gérer vos versions de Python3 avec update-alternatives
et à faire en sorte que /usr/bin/python3
pointe sur la bonne version de Python3 attendue par votre système.