Depuis que j'essaie de passer à 16.04 xenial, je reçois
$ apt
apt: 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
lorsque vous exécutez simplement apt
. Inutile de dire que cela rend la tâche difficile.
Des allusions?
Les coupables sont des restes de PPA pour Ubuntu Toolchain Uploads (restricted) , en particulier
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22
Il y a deux possibilités pour traiter ceci:
Vous avez déjà installé ppa-purge
. ensuite
Sudo ppa-purge ppa:ubuntu-toolchain-r/test
résout les problèmes.
Remplacez libstc ++ en téléchargeant libstdc ++ 6 pour Xenial et en l'installant via dpkg -i
.
J'ai eu le même problème causé par des problèmes de PPA pour la chaîne d'outils Ubuntu. Mon ordinateur ne veut pas démarrer à cause de cela. Après le commentaire de @ w00kie sur sa réponse, j'ai téléchargé (depuis le terminal tty) le fichier debian du paquet libstdc++6
pour Xenial
sur link https://packages.ubuntu.com/xenial/libstdc++6 et installé à l'aide dpkg -i
. L'ordinateur fonctionne très bien maintenant.
wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_AMD64.deb
Sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.10_AMD64.deb
# I also found this helpful
Sudo apt-get -f install
Ma comp n'a pas pu démarrer correctement à cause de cette erreur. Apt-get ne fonctionnait pas, pas plus que Gnome. C'était immédiatement après une mise à niveau de 14.04 à 16.04. Je l'ai résolu en tty en entrant
Sudo apt-add-repository --remove ppa:ubuntu-toolchain-r/test
À ce stade, apt-get
a recommencé à fonctionner et j'ai pu résoudre tous les problèmes à partir de là:
Sudo apt-get clean
Sudo apt-get update
Sudo apt-get install -f
Sudo dpkg -a --configure
Sudo apt-get dist-upgrade
J'ai également dû désinstaller Virtualbox (après la commande de mise à jour) et le rétablir plus tard, mais je pense que cela n'avait aucun rapport.
Je pensais que le problème était unique en mon genre et qu'il était dû à une erreur de téléchargement.
Cette discussion m'a donné l'indice dont j'avais besoin. Fondamentalement, tout ce dont nous avions besoin était de remplacer libstdc ++. So.6.0.22 par libstdc ++. So.6.0.21 dans/usr/lib/x86_64-linux-gnu du système défaillant. (Il semble y avoir une erreur dans la nouvelle version.)
Cela peut être fait à partir d'une clé USB ou, comme dans mon cas, à partir d'un disque de travail.
Tous les détails sur: https://answers.launchpad.net/ubuntu/+question/395832
Merci à tous...
Suivant l'approche dpkg -i
dans la réponse acceptée, ma mise à niveau de 14.04-> 16.04 ne nécessitait pas un mais deux packages:
gcc-5-base_5.4.0-6ubuntu1~16.04.4_i386.deb
libstdc++6_5.4.0-6ubuntu1~16.04.4_i386.deb
Ensuite, apt upgrade
a été en mesure de télécharger les packages restants et de terminer l’installation.
Si vous avez la dernière version du composant logiciel enfichable 'conjure-up' installée avec Snappy sur Yakkety, votre apt sera cassé avec une erreur très similaire:
apt: relocation error: /usr/lib/x86_64-linux-gnu/libapt-private.so.0.0: symbol _ZN13pkgSourceList16AddVolatileFilesER11CommandLinePSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EE, version APTPKG_5.0 not defined in file libapt-pkg.so.5.0 with link time reference
à cause de ce bug:
https://bugs.launchpad.net/snappy/+bug/1a677417
À l'heure actuelle, la seule solution que je connaisse est la suppression du composant logiciel enfichable de conjure-up (ou éventuellement, le 'remplacement du composant logiciel enfichable' par une version précédente si vous en aviez déjà installé une auparavant).
La solution qui a fonctionné pour moi a été d’ajouter la chaîne d’outils Ubuntu:
Sudo apt-add-repository ppa:ubuntu-toolchain-r/test
Sudo apt-get update
Sudo apt-get install -f
Sudo apt-get upgrade
Téléchargez libstdc ++ 6 pour votre ubuntu à partir du site Web du gestionnaire de paquets Ubuntu. (utilisez uname -a
pour trouver l’architecture h/w et s/w).
Courir
Sudo dpkg --install --auto-deconfigure libstdc++6...deb
Redémarrez. Ubuntu devrait démarrer mais apt n’installe pas de nouveaux paquets.
Pour réparer les dépendances et mettre le système à jour, exécutez ces commandes
Sudo apt-add-repository ppa:ubuntu-toolchain-r/test
Sudo apt-get update
Sudo apt-get install -f
Sudo apt-get upgrade
Sudo apt-get dist-upgrade
Sudo apt-get autoclean && Sudo apt-get autoremove
Vous devriez pouvoir le réparer en tapant:
Sudo apt-get -f install
sans spécifier aucun paquet. Il devrait faire le travail.
Il peut y avoir un problème très similaire avec les systèmes i386.
Pour résoudre ce problème, je devais également rétrograder gcc-5-base de la version 5.4.1-2ubuntu1~12.04
en 5.4.0-6ubuntu1~16.04.4
.
Pour terminer la mise à niveau vers un système à l'apparence raisonnable, j'ai également dû utiliser dpkg --purge on vituoso_nepomuk
et virtualbox pour supprimer leurs fichiers de configuration, ce qui posait problème (pour moi, VirtualBox est fourni par le paquet virtualbox-5.1, qui semble indemne de la mise à niveau. .)
La clé était d’obtenir dpkg --configure dbus
au travail.
Pour activer wget dans un écran de type tty, les utilisateurs doivent également exécuter Sudo dhclient eth0
pour activer une connexion Ethernet câblée.
Je viens d'avoir ce problème lors de la mise à niveau de la distribution Ubuntu sur Linux, j'ai vu que:
# ls /usr/lib/x86_64-linux-gnu/libstdc++.so.6*
libstdc++.so.6 -> libstdc++.so.6cd*
libstdc++.so.6.0.20*
libstdc++.so.6.0.21
libstdc++.so.6cd -> libstdc++.so.6.0.20*
libstdc ++. so.6 -> libstdc ++. so.6cd -> libstdc ++. so.6.0.2
Mais il y avait deux fichiers: libstdc ++. So.6.0.21 et libstdc ++. So.6.0.20
J'ai changé le lien symbolique pour qu'il pointe vers la dernière version de libstdc ++. So.6.0.21
cd /usr/lib/x86_64-linux-gnu
rm libstdc++.so.6cd
chmod +x libstdc++.so.6.0.21
ln -s libstdc++.so.6.0.21 libstdc++.so.6cd
Résultant:
libstdc++.so.6 -> libstdc++.so.6cd*
libstdc++.so.6.0.20*
libstdc++.so.6.0.21*
libstdc++.so.6cd -> libstdc++.so.6.0.21*
et tout est revenu à la normale