Il semble que j’ai confondu quelque chose avec une mise à jour manuelle gcc
autrefois, ce qui n’est pas devenu un problème jusqu’à aujourd’hui, lorsque j’ai mis à niveau du 14.04 au 16.04. Notamment, le système semble penser que la version libstdc++6
est OK, tandis que apt
(et de nombreux autres programmes) se plaignent que ce n'est pas le cas (car la bibliothèque partagée est en fait dans la mauvaise version):
Sudo apt-get install --fix-broken --fix-missing
apt-get: relocation error: /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0: symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference
Le système ne démarre même pas en mode graphique, la sortie ci-dessus a été obtenue à l'aide d'une console non graphique (en utilisant Ctrl-Alt-F6
), et apt
lui-même est complètement inutilisable. Je ne peux donc rien faire. comme une réinstallation.
Comment puis-je réparer et réinstaller ces paquets, lorsque le programme que j'utilise pour les gérer lui-même est affecté et inutilisable?
Au début, j’ai pu obtenir un shell de connexion graphique en copiant manuellement libstdc++.so.6.0.21
à sa place à partir d’une clé USB Live et en créant un lien à partir de _libstdc++.so.6
_. J'ai utilisé cette version exacte car elle semble être la valeur par défaut pour Ubuntu 16.04 et contient également le "21" mentionné dans le message d'erreur ("version GLIBCXX_3.4.21").
Bien que cela semble satisfaire la pile graphique, les mêmes erreurs subsistent avec apt
et d'autres programmes dépendant de libstdc ++ 6. Après quelques tentatives, je pourrais résoudre le problème en suivant les étapes suivantes, en utilisant dpkg
pour installer (dés) installer manuellement les choses:
Téléchargez les fichiers deb dans les bonnes versions pour 16.04:
_wget http://mirrors.kernel.org/ubuntu/pool/main/a/apt/apt_1.2.10ubuntu1_AMD64.deb http://mirrors.kernel.org/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.4_AMD64.deb
_
Suppression de cette version spécifique, qui bloquait l’installation de la bonne libstdc ++ 6:
_Sudo dpkg --force-depends -r libstdc++6:i386
_
Puis installez la "bonne" version à partir des fichiers:
_Sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.4_AMD64.deb apt_1.2.10ubuntu1_AMD64.deb
_
Et enfin, corrigez les dégâts que j'ai laissés en mettant à jour et en essayant des choses:
_Sudo apt-get install -f
_