Un problĂšme un paquet qui ne veut plus sâinstaller et qui ne fonctionne plus ? Ici, je prends lâexemple de python, car câest un sujet rĂ©current pour moi, mais en rĂ©alitĂ© cette procĂ©dure fonctionne dans dâautre cas de figure.
Typiquement vous avez essayé des trucs du genre sudo apt-get autoremove
, sudo apt-get install --fix-broken
, dans le cas de python sudo apt install --reinstall hplip hplip-data
sans succĂšs, vous trouverez alors de procĂ©dures qui peuvent-ĂȘtre catastrophique surtout sur une machine qui Ă un environnement graphique :
# Déconseillé sur une machine avec un environnement graphique
sudo apt-get purge python* && sudo apt-get autoclean && sudo apt-get install python*
Pourquoi cette derniĂšre ligne, que jâai trouvĂ© sur plusieurs sites, est une solution extrĂȘmement dangereuse sur une machine avec un environnement graphique ? Python est souvent une dĂ©pendance avec la couche graphique, et donc la dĂ©sinstallation de python risque de produire la dĂ©sinstallation de toute la couche graphique, je vous souhaite bon courage pour remonter cela. Sur un serveur sans interface graphique (le terme informatique utilisĂ© pour dĂ©crire cela est « headless ») cela peut ĂȘtre une bonne solution, tout dĂ©pend de ce qui est installĂ©.
Je vous propose donc une procédure qui est beaucoup moins risqué et qui est un peu moins en mode bricolage.
Identifier le paquet en cause
Commencer par lancer la commande : (cela va échouer)
sudo apt-get upgrade
En regardant attentivement les traces, il est possible dâidentifier le paquet en cause. Dans mon cas, il nâĂ©tait plus possible dâinstaller ou de mettre Ă jour python3:amd64
.
La procédure
Lâobjectif est de contourner lâinstallation du paquet qui ne se met pas Ă jour. On va sâassurer que lâensemble des autres paquets sont correctement installĂ©s.
Puis par passes successives on va faire fonctionner progressivement le reste de la mise Ă jour, et on finira par mettre Ă jour le paquet en cause.
Dans mon exemple, le nom du paquet en cause est python3:amd64
(vous aurez Ă adapter ce nom en fonction de votre problĂšme)
Exécutez la mise à niveau (qui échouera):
sudo apt-get upgrade
Ensuite, nous allons installer les fichiers que nous pouvons Ă partir du cache (cela rĂ©ussira pour certains, mais Ă©chouera pour dâautres) :
sudo dpkg -i /var/cache/apt/archives/*.deb
Puis on va dâinstaller le paquet qui nous ennuis (ne pas purger !). Cela entraĂźnera la rupture de nombreuses dĂ©pendances, ne vous inquiĂ©tez pas, nous les corrigerons par la suite.
sudo dpkg -r --force-depends python3:amd64
Il faut ensuite reconfigurer les paquets du systÚme (cela réussira dans la plupart des cas):
sudo dpkg --configure -a
On a progressĂ©, et on va relancer lâinstallation des paquets Ă partir du cache (cela rĂ©ussira pour certains, mais Ă©chouera pour dâautres):
sudo dpkg -i /var/cache/apt/archives/*.deb
Maintenant, exĂ©cutez une autre mise Ă jour du systĂšme qui tĂ©lĂ©chargera les packages nĂ©cessaires (mais Ă©chouera lors de lâinstallation) :
sudo apt-get upgrade
Si vous ĂȘtes chanceux, cela pourrait commencer Ă fonctionner Ă partir dâici, mais sinon, une autre sĂ©rie dâinstallations Ă partir du cache le permettra.
Réinstallez à partir du cache (réussira !)
sudo dpkg -i /var/cache/apt/archives/*.deb
Enfin, vous pouvez maintenant vérifier que les autres installations ou mises à niveau réussiront.
Références
኿