Come risolvere "l'installazione di Python è danneggiata"?


37

Stavo aggiornando dal 13.10 al 14.04 (dev per ora, stabile in poche ore) utilizzando do-release-upgradee ho riscontrato il seguente problema:

Can not upgrade 

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

Ho risolto il problema dopo aver fatto un po 'di casino, quindi vorrei condividere la mia soluzione qui. Spero che questo possa aiutare qualcuno.

Risposte:


53

Il mio problema si è rivelato essere dovuto esclusivamente a un collegamento /usr/bin/pythonsimbolico modificato, come suggerito nel messaggio di errore. Stavo usando update-alternativescon /usr/bin/pythoncosì stava indicando /etc/alternatives/python. Si è scoperto che do-release-upgradeè davvero rigoroso con questo link simbolico e semplicemente selezionare python2.7 con update-alternativesnon è abbastanza, quindi ho finito per forzarlo al suo stato originale:

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

E questo ha risolto il problema.

Se questo non funziona per te, suppongo che tu abbia un'installazione di Python autenticamente corrotta. Suggerirei

sudo apt-get install --reinstall python

@BenjaminKohl Sono contento che abbia aiutato :)
4ae1e1,

Non è stato /etc/alternatives/pythoncollegato a symlink /usr/bin/python2.7? qualcos'altro ha una priorità maggiore?
heemayl

Temo che lo stai ottenendo al contrario .... /usr/bin/python2.7è il vero binario, non dovrebbe mai essere il symlink, il symlink è il /etc/alternatives/python... ti dispiace controllarlo di nuovo?
heemayl

@heemayl Siamo spiacenti, ho letto male il tuo commento + errore di battitura da parte mia. /usr/bin/pythonè un collegamento simbolico a /etc/alternatives/python(ovviamente /usr/bin/python2.7è il binario, ma non è questo il problema qui).
4ae1e1

E sì, /etc/alternatives/pythonviene quindi collegato a qualunque cosa tu abbia selezionato (non necessariamente /usr/bin/python2.7- perché dovresti averne bisogno update-alternativesin quel caso?), Ma il punto è che il collegamento simbolico non è consentito per /usr/bin/pythonte do-release-upgrade.
4ae1e1

16

questo è corretto:

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

2
Questo è assolutamente corretto. Non avrebbe funzionato per me fino a quando non avessi rimosso per la prima volta tutto quello esistente usandoupdate-alternatives --remove-all python
Try TryAgain

5

In Ubuntu 18.10 c'è ancora lo stesso problema.

/ Usr / bin / python è collegato a una versione precedente. Sono disponibili anche versioni successive alla 2.7, ma questo processo super intelligente richiede (nel 18.10!) La P 2.7. Così l'ho dato ed è stato accettato.

Questo mi ha risolto:

1) cancellare / usr / bin / python facendo sudo rm /usr/bin/python

2) Crea un nuovo link sudo ln -sf /usr/bin/python2.7 /usr/bin/python

Nel 18.10 NON potevo usare sudo update-alternatives --remove-all python o sudo apt-get install --reinstall python.

Per me va bene. Spero che ti aiuti anche tu.


ls -sfignora l'obiettivo, quindi 1) è inutile e 2) è esattamente ciò che la mia risposta ti ha detto di fare. Che spreco ...
4ae1e1

Non perdonare: la tua citazione è sbagliata e ho detto il contrario di quello che dici di "... --reinstall python". Sì, la mia esperienza con 18.10 è diversa dalla tua e te lo spiego. Non c'è bisogno di commenti sfacciati.
opinion_no9,

Ho visto "Se questo non funziona per te, allora suppongo che tu abbia un'installazione di Python autenticamente corrotta."?
4ae1e1,

Fondamentalmente, la lezione è: leggi l'ambiente circostante e scopri perché, non solo cherrypick qualunque blocco di codice ci sia, incollali nel tuo terminale (pericoloso) e vedi cosa si attacca. A proposito, il tuo sudo rmè ancora inutile.
4ae1e1,

1
È vero, funziona il 18.10. Grazie.
Ali,

1

Per Ubuntu 19.04 la versione predefinita di Python è 3.7. Ho avuto lo stesso errore durante l'aggiornamento a Ubuntu 19.10 e, quanto segue ha aiutato:

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

Nel caso in cui tu abbia problemi molto seri con il tuo pacchetto python, l'unico modo rimasto è forzarlo rimuoverlo, quindi reinstallarlo:

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

0

Se ti imbatti in questo, /usr/bin/python3allora:

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

Assicurati di collegare simbolicamente python3.6e non 3.7. Almeno quello era richiesto durante l'aggiornamento Ubuntu 18.10a 19.04.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.