Quiero actualizar de Ubuntu 16.04.5 LTS a 18.04, así que corrí sudo do-release-upgrade
. Después de descargar y extraer bionic.tar.gz
obtengo:
Can not upgrade
Your python3 install is corrupted. Please fix the '/usr/bin/python3'
symlink.
Vi ¿Cómo arreglar "la instalación de Python está dañada"? y entonces sudo ln -sf /usr/bin/python3.6 /usr/bin/python3
pensé que sería un problema similar. Pero eso no funcionó (sigue siendo el mismo mensaje de error).
Tengo algunas versiones de 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
¿Cómo lo soluciono python3
?
upgrade
python3
do-release-upgrade
mRcSchwering
fuente
fuente
Respuestas:
Debe usar la versión predeterminada de Python 3 para 16.04. Eso es 3.5 , no 3.6. Entonces corre:
Si eso no funciona, intente reinstalar el
python3
paquete.Por cierto,
update-alternatives --display python3
debería darteupdate-alternatives: error: no alternatives for python3
. Las diferentes versiones de Python no son alternativas en Ubuntu.fuente
Me encontré con este problema en Pop! _OS 18.04, tratando de actualizar a 18.10, y resulta que el problema estaba en el enlace simbólico para
/usr/bin/python
y no para/usr/bin/python3
. Me había/usr/bin/python3.6
configurado como una alternativa parapython
(nopython3
), y cuando cambié esto, pude ejecutardo-release-upgrade
como se esperaba.Deseo que el mensaje de error apunte
python
y nopython3
.Antes, con el problema:
Lo arreglé de esta manera:
También vea este comentario a continuación que describe una solución más precisa que también explica mejor lo que está sucediendo y cómo solucionarlo.
fuente
update-alternatives --remove-all python
era definitivamente una exageración innecesaria: todo lo que tenía que hacer era usarupdate-alternatives --config python
para tener elpython
punto más recientepython2.*
(por ejemplopython2.7
), luego usarupdate-alternatives --config python3
para tener unpython3
punto específicopython3.6
, que es la versión predeterminada de Python 3 para 18.04.gnome-terminal
,update-manager
, etc. Más bien utilizar entornos virtuales (documentación aquí y aquí )Observé este mensaje de error en Windows 10 1903 ejecutando WSL Ubuntu cuando quería actualizar de 16.04 LTS a 18.04 LTS .
Después de
do-release-upgrade
haber fallado, cambié laspython
alternativas a cada opción ofrecida porupdate-alternatives --config python
y ejecuté el comando de actualización nuevamente. Eso no ayudó.Luego revisé el archivo de registro
/var/log/dist-upgrade/main.log
que contenía las líneasEntonces, aunque el mensaje de error menciona python3 , el problema es sobre python2 .
El script de actualización verifica la
/usr/bin/python
vinculación a/usr/bin/python2
, vea el código fuente deDistUpgrade/DistUpgradeController.py
aquí: ubuntu launchpadEntonces, una solución es eliminar completamente Python del sistema alternativo y agregar el enlace manualmente, como se describe en la respuesta más popular.
Si no desea eliminar Python del sistema alternativo, simplemente cambie el enlace solo por el tiempo durante el proceso de actualización:
Esto funcionó para mí.
Durante el proceso de actualización, el enlace se repara automáticamente. Entonces, cuando finaliza la actualización, apunta a la entrada de Python en el directorio de alternativas:
Editar: para obtener información detallada, el problema también puede aparecer si actualiza de 18.04 LTS a 19.04 y la respuesta también se aplica a esta situación.
fuente
Básicamente, la solución a este problema consiste en
/usr/bin/python
señalar la versión correcta de Python que su versión de Ubuntu espera (por ejemplo, en 16.04 era Python2.7 y en 18.04 era Python3.6).Si tiene varias versiones de Python instaladas en su sistema, podría estar utilizándolas
update-alternatives
para administrarlas. No importa mucho, su alternativa predeterminada para Python es la versión correcta que su sistema espera (3.6 en Ubuntu 18.04), no funcionará.La razón por la que esto no funciona es que, cuando se usa
update-alternatives
,/usr/bin/python3
apunta a/etc/alternatives/python3
, y parece que eso no es exactamente lo mismo que/usr/bin/python3
señalar/usr/bin/python3.6
.Es por eso que la solución a este problema a menudo consiste en dejar de administrar sus versiones de Python3
update-alternatives
y/usr/bin/python3
señalar la versión correcta de Python3 que su sistema espera.fuente
/usr/bin/python
no existe en una instalación limpia de 18.04, pero sí si realiza una actualización en lugar de una instalación limpia o instala elpython
paquete, en cuyo caso debería ser Python 2.7, no 3.6. Ver PEP 394 .update-alternatives
. Esto se debe a que el sistema operativo depende de la instalación de una determinada versión.