Chcę uaktualnić z Ubuntu 16.04.5 LTS do 18.04, więc uruchomiłem sudo do-release-upgrade
. Po pobraniu i rozpakowaniu bionic.tar.gz
otrzymuję:
Can not upgrade
Your python3 install is corrupted. Please fix the '/usr/bin/python3'
symlink.
Widziałem, jak naprawić „instalacja Pythona jest uszkodzona”? i sudo ln -sf /usr/bin/python3.6 /usr/bin/python3
pomyślałem, że będzie to podobny problem. Ale to nie działało (wciąż ten sam komunikat o błędzie).
Mam kilka wersji Pythona:
$ 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
Jak to naprawić python3
?
upgrade
python3
do-release-upgrade
mRcSchwering
źródło
źródło
Odpowiedzi:
Musisz użyć domyślnej wersji Python 3 dla 16.04. To 3,5 , a nie 3,6. Więc uruchom:
Jeśli to nie zadziała, spróbuj ponownie zainstalować
python3
pakiet.Nawiasem mówiąc,
update-alternatives --display python3
powinienem ci daćupdate-alternatives: error: no alternatives for python3
. Różne wersje Pythona nie są alternatywą dla Ubuntu.źródło
Właśnie natknąłem się na ten problem na Pop! _OS 18.04, próbując uaktualnić do 18.10, i okazuje się, że problem tkwi w dowiązaniu symbolicznym dla,
/usr/bin/python
a nie dla/usr/bin/python3
. Miałem/usr/bin/python3.6
skonfigurowany jako alternatywa dlapython
(niepython3
), a kiedy to zmieniła, wtedy mogę działaćdo-release-upgrade
zgodnie z oczekiwaniami.Chciałbym, aby komunikat o błędzie wskazywał,
python
a nie wskazywałpython3
.Przedtem z problemem:
Naprawiłem to w ten sposób:
Zobacz także ten komentarz poniżej, który opisuje bardziej precyzyjne rozwiązanie, które lepiej wyjaśnia, co się dzieje i jak to naprawić.
źródło
update-alternatives --remove-all python
zdecydowanie niepotrzebna przesada: Wszystko, co potrzebne do zrobienia używałupdate-alternatives --config python
miećpython
punkt do najnowszychpython2.*
(na przykładpython2.7
), a następnie użyćupdate-alternatives --config python3
miećpython3
wskaż konkretniepython3.6
- co jest domyślne Python 3 wersja 18.04.gnome-terminal
,update-manager
itp raczej używać wirtualnych środowisk (dokumentacja tutaj i tutaj )Zauważyłem ten komunikat o błędzie w systemie Windows 10 1903 z uruchomionym WSL Ubuntu, gdy chciałem uaktualnić z 16.04 LTS do 18.04 LTS .
Po tym,
do-release-upgrade
jak zawiodło, zamieniłempython
alternatywy na wszystkie opcje oferowane przezupdate-alternatives --config python
i ponownie uruchomiłem polecenie aktualizacji. To nie pomogło.Następnie sprawdziłem plik dziennika
/var/log/dist-upgrade/main.log
zawierający linieWięc chociaż komunikat o błędzie wspomina o python3 , problem dotyczy python2 .
Skrypt aktualizacji sprawdza
/usr/bin/python
połączenie z/usr/bin/python2
, zobacz kod źródłowyDistUpgrade/DistUpgradeController.py
tutaj: starter UbuntuJednym z rozwiązań jest całkowite usunięcie Pythona z alternatywnego systemu i ręczne dodanie linku, jak opisano w najpopularniejszej odpowiedzi.
Jeśli nie chcesz usuwać Pythona z alternatywnego systemu, po prostu zmień łącze tylko na czas podczas procesu aktualizacji:
To zadziałało dla mnie.
Podczas procesu aktualizacji łącze jest automatycznie naprawiane. Kiedy aktualizacja zostanie zakończona, wskazuje na pozycję python w katalogu alternatyw:
Edycja: w celu uzyskania dokładnych informacji problem może pojawić się również w przypadku aktualizacji z 18.04 LTS do 19.04, a odpowiedź dotyczy również tej sytuacji.
źródło
Zasadniczo rozwiązanie tego problemu polega na
/usr/bin/python
wskazaniu właściwej wersji Pythona, której oczekuje Twoja wersja Ubuntu (na przykład w 16.04 było Python2.7, a w 18.04 było Python3.6).Jeśli masz kilka wersji Pythona zainstalowanych w systemie, być może używasz ich
update-alternatives
do zarządzania. Nie ma znaczenia, że domyślną alternatywą dla Pythona jest odpowiednia wersja, jakiej oczekuje Twój system (3.6 w Ubuntu 18.04), to nie będzie działać.Powodem, dla którego to nie działa jest to, że podczas używania
update-alternatives
,/usr/bin/python3
wskazuje/etc/alternatives/python3
, i wydaje się, że nie jest to dokładnie to samo co/usr/bin/python3
wskaż/usr/bin/python3.6
.Dlatego rozwiązanie tego problemu często polega na zaprzestaniu zarządzania wersjami Python3
update-alternatives
i/usr/bin/python3
wskazaniu właściwej wersji Python3, której oczekuje Twój system.źródło
/usr/bin/python
nie istnieje w czystej instalacji 18.04, ale dzieje się tak, jeśli wykonasz aktualizację zamiast czystej instalacji lub zainstalujeszpython
pakiet, w takim przypadku powinien to być Python 2.7, a nie 3.6. Zobacz PEP 394 .update-alternatives
. Wynika to z faktu, że system operacyjny zależy od zainstalowania określonej wersji.