Bagaimana cara memperbaiki "instalasi python rusak"?

37

Saya meningkatkan dari 13,10 ke 14,04 (dev untuk saat ini, stabil dalam beberapa jam) menggunakan do-release-upgradedan mengalami masalah berikut:

Can not upgrade 

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

Saya memecahkan masalah setelah sedikit bercanda, jadi saya ingin membagikan solusi saya di sini. Semoga ini bisa membantu seseorang.

4ae1e1
sumber

Jawaban:

53

Masalah saya ternyata semata-mata karena perubahan /usr/bin/pythontautan seperti yang disarankan dalam pesan kesalahan. Saya menggunakan update-alternativesdengan /usr/bin/pythonbegitu itu menunjuk ke /etc/alternatives/python. Ternyata itu do-release-upgradesangat ketat dengan symlink ini dan hanya memilih python2.7 dengan update-alternativestidak cukup, jadi saya akhirnya memaksanya ke keadaan semula:

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

Dan itu memecahkan masalah.

Jika ini tidak berhasil untuk Anda, maka saya kira Anda memiliki instalasi python yang benar-benar rusak. Saya sarankan

sudo apt-get install --reinstall python
4ae1e1
sumber
@BenjaminKohl Senang membantu :)
4ae1e1
Tidak /etc/alternatives/pythondisinkronkan dengan /usr/bin/python2.7? apakah ada hal lain yang memiliki prioritas lebih tinggi?
heemayl
Saya khawatir Anda mendapatkannya mundur .... /usr/bin/python2.7apakah biner yang sebenarnya, seharusnya tidak pernah menjadi symlink, symlink adalah /etc/alternatives/python.. apakah Anda keberatan memeriksanya lagi?
heemayl
@heemayl Maaf, salah membaca komentar Anda + salah ketik di bagian saya. /usr/bin/pythonadalah symlink ke /etc/alternatives/python(tentu saja /usr/bin/python2.7biner, tapi bukan itu masalahnya di sini).
4ae1e1
Dan ya, /etc/alternatives/pythonkemudian disinkronkan dengan apa pun yang Anda pilih (tidak harus /usr/bin/python2.7- mengapa Anda bahkan perlu update-alternativesdalam kasus itu?), Tetapi intinya adalah symlinking tidak diperbolehkan /usr/bin/pythonketika Anda do-release-upgrade.
4ae1e1
16

ini benar:

sudo update-alternatives --remove-all python
sudo ln -sf /usr/bin/python2.7 /usr/bin/python
Vitaliy Kulikov
sumber
2
Ini benar sekali. Itu tidak akan bekerja untuk saya sampai saya juga pertama menghapus semua yang ada menggunakanupdate-alternatives --remove-all python
TryTryAgain
5

Di Ubuntu 18.10 masih ada masalah yang sama.

/ Usr / bin / python ditautkan ke versi yang lebih lama. Bahkan lebih dari 2,7 tersedia tetapi proses super pintar ini meminta (dalam 18.10!) Untuk P 2.7. Jadi saya berikan dan diterima.

Ini menyelesaikannya untuk saya:

1) hapus / usr / bin / python lakukan sudo rm /usr/bin/python

2) Buat tautan baru sudo ln -sf /usr/bin/python2.7 /usr/bin/python

Di 18.10 saya TIDAK bisa menggunakan sudo update-alternatives --remove-all python atau sudo apt-get install --reinstall python.

Bekerja untukku. Semoga ini bisa membantu Anda juga.

opinion_no9
sumber
ls -sfmengesampingkan target jadi 1) tidak ada gunanya, dan 2) adalah persis apa jawaban saya katakan untuk Anda lakukan.
Sayang sekali
Jangan kata-kata kasar: Kutipan Anda salah dan saya mengatakan kebalikan dari apa yang Anda katakan tentang "... - Instal ulang python". Ya, pengalaman saya dengan 18.10 berbeda dari pengalaman Anda dan saya jelaskan ini. Tidak perlu sama sekali untuk komentar kurang ajar.
opinion_no9
Lihat "Jika ini tidak berhasil untuk Anda, maka saya kira Anda memiliki instalasi python yang benar-benar rusak."?
4ae1e1
Pada dasarnya, pelajarannya adalah: Anda membaca lingkungan dan mempelajari alasannya, bukan hanya ceripick apa pun blok kode yang ada, tempelkan ke terminal Anda (berbahaya), dan lihat tongkat apa. Ngomong-ngomong, Anda sudo rmmasih tidak berguna.
4ae1e1
1
Benar, ini bekerja pada 18.10. Terima kasih.
Sayap
1

Untuk Ubuntu 19.04 , versi python default adalah 3.7. Saya mendapat kesalahan yang sama saat memutakhirkan ke Ubuntu 19.10, dan yang berikut membantu:

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

Jika Anda memiliki masalah yang sangat serius dengan paket python Anda, satu-satunya cara yang tersisa adalah dengan paksa menghapusnya, dan kemudian instal ulang:

sudo dpkg --remove --force-remove-reinstreq --force-depends python3
sudo apt-get -f install
Vibhu Vaibhav
sumber
0

Jika Anda mengalami hal ini /usr/bin/python3maka:

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

Pastikan untuk symlink python3.6dan tidak 3.7. Setidaknya itu diperlukan saat meningkatkan Ubuntu 18.10ke 19.04.

Jana
sumber