Як виправити “встановлення python пошкоджено”?


37

Я проходив модернізацію з 13.10 до 14.04 (розроблений зараз, стабільний за кілька годин), використовуючи do-release-upgradeта зіткнувся з наступною проблемою:

Can not upgrade 

Your python install is corrupted. Please fix the '/usr/bin/python' symlink.

Я вирішив проблему після того, як трохи поплутався, тому хотів би поділитися своїм рішенням тут. Сподіваюся, це може комусь допомогти.

Відповіді:


53

Моя проблема виявилася виключно через змінене /usr/bin/pythonсимвольне посилання, як було запропоновано в повідомленні про помилку. Я використовував update-alternativesз /usr/bin/pythonтак вказував /etc/alternatives/python. Виявилося, що do-release-upgradeце суворо суворо з цим символьним посиланням і просто вибору python2.7 за допомогою update-alternativesнедостатньо, тому я в кінцевому підсумку змусив його до початкового стану:

sudo ln -sf /usr/bin/python2.7 /usr/bin/python

І це вирішило проблему.

Якщо це не працює для вас, то, мабуть, у вас справді пошкоджений пітон. Я б запропонував

sudo apt-get install --reinstall python

@BenjaminKohl Радий, що це допомогло :)
4ae1e1

Не було /etc/alternatives/pythonпосилання на /usr/bin/python2.7? щось інше має більший пріоритет?
heemayl

Боюся, ви отримуєте його назад .... /usr/bin/python2.7це власне бінарне, воно ніколи не повинно бути символьним посиланням, символьне посилання - це .. /etc/alternatives/pythonви не проти перевірити його ще раз?
heemayl

@heemayl Вибачте, неправильно прочитайте ваш коментар + друк з мого боку. /usr/bin/pythonє символьним посиланням на /etc/alternatives/python(звичайно, /usr/bin/python2.7це бінарне, але це не проблема тут).
4ae1e1

І так, /etc/alternatives/pythonпотім пов'язується з тим, що ви вибрали (не обов'язково /usr/bin/python2.7- навіщо вам це навіть потрібно update-alternativesв такому випадку?), Але точка, що символізує, заборонена для /usr/bin/pythonвас do-release-upgrade.
4ae1e1

16

це правильно:

sudo update-alternatives --remove-all python
sudo ln -sf /usr/bin/python2.7 /usr/bin/python

2
Це абсолютно правильно. Це не спрацювало б для мене, поки я вперше не видалив усі існуючі за допомогоюupdate-alternatives --remove-all python
TryTryAgain

5

В Ubuntu 18.10 залишається та сама проблема.

/ Usr / bin / python пов'язаний зі старою версією. Навіть пізніше 2,7 доступні, але цей надзвичайно розумний процес просить (в 18.10!) Про P 2.7. Тому я дав це, і це було прийнято.

Це вирішило це для мене:

1) видалити / usr / bin / python робити sudo rm /usr/bin/python

2) Створіть нове посилання sudo ln -sf /usr/bin/python2.7 /usr/bin/python

У 18.10 я не міг використовувати sudo update-alternatives --remove-all python або sudo apt-get install --reinstall python.

Працює для мене. Сподіваюся, це теж допоможе вам.


ls -sfпереосмислює ціль, так що 1) безглуздо, і 2) саме те, що моя відповідь сказала вам зробити. Що за марно ...
4ae1e1

Dont rant: Ваша цитата неправильна, і я сказав протилежне тому, що ви говорите про "... - перевстановіть python". Так, мій досвід роботи з 18.10 відрізняється від вашого, і я пояснюю це. Зовсім не потрібно в нахабних коментарях.
думка_no9

Побачив "Якщо це не працює для вас, то, мабуть, у вас справді пошкоджений пітон."?
4ae1e1

По суті, урок такий: ви читаєте оточення і дізнаєтеся чому, а не просто вишневий код, який би там не було код, вставити їх у свій термінал (небезпечно), і подивитися, що палички. До речі, ваше sudo rmвсе ще безглуздо.
4ae1e1

1
Правда, працює 18.10. Спасибі.
Крила

1

Для Ubuntu 19.04 типовою версією python є 3,7. Я отримав таку ж помилку під час оновлення до Ubuntu 19.10, і, наступне допомогло:

sudo apt-get install --reinstall python3
sudo ln -sf /usr/bin/python3.7 /usr/bin/python3

Якщо у вас є дуже серйозні проблеми з вашим пакетом python, єдиний спосіб залишитися - змусити його видалити, а потім перевстановити:

sudo dpkg --remove --force-remove-reinstreq --force-depends python3
sudo apt-get -f install

0

Якщо ви зіткнулися з цим щодо /usr/bin/python3цього:

sudo update-alternatives --remove-all python3
sudo ln -sf /usr/bin/python3.6 /usr/bin/python3

Переконайтеся, що символізувати, python3.6а ні 3.7. Принаймні, що було потрібно під час оновлення Ubuntu 18.10до 19.04.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.