apt: error de reubicación: versión GLIBCXX_3.4.21 no definida en el archivo libstdc ++. so.6 con referencia de tiempo de enlace

63

Desde que trato de actualizar a 16.04 xenial, obtengo

$ 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

cuando simplemente corres apt. No hace falta decir que esto hace que sea difícil hacer algo.

¿Alguna pista?

Nico Schlömer
fuente
wow ... esto me hace desconfiar realmente del proceso de actualización de Ubuntu / Canonical. Cada vez que tengo una versión funcional pero obsoleta, alguien en un foro de ayuda me dice que las actualizaciones resolverán todos mis problemas ... No sé qué es un "disco de memoria virtual", y ciertamente no quiero interrumpir el trabajo con la GRUBdepuración ...
isomorphismes

Respuestas:

55

Tuve el mismo problema causado por problemas de PPA para Ubuntu toolchain. Mi computadora no arranca por eso. Siguiente comentario de @ w00kie en su respuesta, he descargado (desde la terminal TTY) el debian del paquete libstdc++6para Xenialen enlace https://packages.ubuntu.com/xenial/libstdc++6 e instalado usando dpkg -i. La computadora funciona bien ahora.

Pasos

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
Sagar Jha
fuente
55
¿Puedes poner los comandos, paso a paso, en tu respuesta? No estoy familiarizado con esto en absoluto y mi máquina Linux está funcionando ...
Zachary Fields
@ Zachary ¿Cuál es el problema exacto que enfrenta? ¿Eres capaz de arrancar?
Sagar Jha
1
Realmente no. Si lo dejo ir, la pantalla parpadea durante unos 15 minutos, entonces aparece un mensaje de terminal tty2 en un color gris muy claro. No puedo usar apt(o ninguna herramienta realmente). Incluso he intentado descargar libstdc++6...debdesde una unidad USB de arranque, colocar manualmente el paquete, reiniciar en el sistema dañado e instalar el .debuso sudo dpkg -i libstdc++6...deb, pero ni siquiera sabe qué dpkges.
Zachary Fields
13
Para descargar / instalar el archivo .deb, puede hacer lo siguiente: wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deby luego, una vez que se descargue, dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deb(se supone un sistema de 64 bits). Para mí, mi conexión a Internet no funcionaba, así que la descargué en una unidad USB desde una computadora diferente, luego tuve que montar manualmente la unidad USB en mi computadora problemática ( sudo mount /dev/sdc1 /media/usbdonde sdc1se encontró al ver la salida del terminal justo después de conectar el USB) y luego ejecuta el dpkgcomando anterior .
Garrett
77
Tuve que usar dpkg --force-all -i libstdc+‌​+6_5.4.0-6ubuntu1~16‌​.04.2_amd64.debpara instalarlo
virtualxtc
26

El culpable son los restos del PPA para las cargas de Ubuntu Toolchain (restringido) , específicamente

/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22

Hay dos posibilidades de lidiar con esto:

  • Ya lo tienes ppa-purgeinstalado. Entonces

    sudo ppa-purge ppa:ubuntu-toolchain-r/test
    

    soluciona los problemas.

  • Anule libstc ++ descargando libstdc ++ 6 para Xenial e instalándolo a través de dpkg -i.

Nico Schlömer
fuente
44
Al menos para mí, esto falla con un mensaje idéntico al de la pregunta ...
mbdevpl
1
Probablemente debería expandirse con las respuestas de abajo, porque obviamente ppa-purgeno funcionará (mismo python)
user64204
1
Obtengo:sudo: ppa-purge: command not found
Garrett
@Garrettsudo apt install ppa-purge
Nico Schlömer
3
@ NicoSchlömer, gracias, pero en realidad, creo que mi apttampoco estaba funcionando (según la publicación original).
Garrett
8

Mi comp no pudo arrancar correctamente debido a este error. Apt-get no funcionaba, ni Gnome. Esto fue inmediatamente después de una actualización de 14.04 a 16.04. Lo resolví en tty ingresando

sudo apt-add-repository --remove ppa:ubuntu-toolchain-r/test

En este punto apt-getcomencé a trabajar nuevamente y pude arreglar todos los problemas desde allí:

sudo apt-get clean
sudo apt-get update
sudo apt-get install -f
sudo dpkg -a --configure
sudo apt-get dist-upgrade

También tuve que desinstalar Virtualbox (después del comando de actualización) y reinstalarlo más tarde, pero creo que esto no estaba relacionado.

Matjaz
fuente
2
probé esto pero recibí un error de importación en el paquete apt_pkg
Mixone
Mixone, ¿cuál fue el error exacto y en qué comando exactamente?
Matjaz el
sudo apt-get update el error vino del backend de python, supongo, el stacktrace era python y básicamente decía que no podía encontrar el módulo apt_pkg
Mixone
55
El mismo problema para mí también, tratar de usar el apt-add-repositorycomando en su respuesta da:ImportError: /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0: symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_, version GLIBCXX_3.4.21 not defined in the file libstdc++.so.6 with link time reference
Garrett
Para idiotas como yo que intentan actualizar 2 años después del lanzamiento y piensan que todos los errores están solucionados. El enlace en el comentario anterior está roto. Aquí está el nuevo. http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb(o i386ambos) Y no te importa que dpkg te maldiga. Haga --auto--deconfigurey apt-getluego volverá a la normalidad a pesar de los mensajes de error. Y podrá terminar con el -f --install+ adecuado --upgradey reiniciar en un sistema nuevo.
Ufos
4

Había estado pensando que el problema era algo único para mí y que fue causado por un error de descarga.

Esta discusión me dio la pista que necesitaba. Básicamente, todo lo que se necesitaba era reemplazar libstdc ++. So.6.0.22 con libstdc ++. So.6.0.21 en / usr / lib / x86_64-linux-gnu del sistema que falla. (Parece que hay un error en la versión más reciente).

Esto se puede hacer desde una memoria USB o, como en mi caso, desde un disco de memoria virtual.

Detalles completos en: https://answers.launchpad.net/ubuntu/+question/395832

Gracias a todos...

SteelTrap
fuente
Usé este truco, pero hice un arranque dual en un poco de espacio libre. Pude montar fácilmente la partición original. Fue bastante facil.
Andrew
Impresionante: estos 3 comandos me funcionaron: cd / usr / lib / x86_64-linux-gnu / >>> sudo rm libstdc ++. So.6 >>> sudo ln -s libstdc ++. So.6.0.21 libstdc ++. So.6
osman
3

Siguiendo el dpkg -ienfoque en la respuesta aceptada, mi actualización 14.04-> 16.04 requirió no uno sino dos paquetes:

gcc-5-base_5.4.0-6ubuntu1~16.04.4_i386.deb
libstdc++6_5.4.0-6ubuntu1~16.04.4_i386.deb

Después de esto, apt upgradepude descargar los paquetes restantes y completar la instalación.

usuario1905416
fuente
2

Si tiene la última versión del complemento 'conjurar' instalado con Snappy en Yakkety, su apt se romperá con un error muy similar:

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

debido a este error:

https://bugs.launchpad.net/snappy/+bug/1a677417

Actualmente, la única solución alternativa que conozco es eliminar el complemento de conjuración (o posiblemente 'revertir el complemento' a una versión anterior si tenía una instalada anteriormente).

Hiedra
fuente
1

La solución que funcionó para mí fue volver a agregar el ppa de la cadena de herramientas de Ubuntu:

sudo apt-add-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -f
sudo apt-get upgrade
Christopher Roberts
fuente
0

Debería poder solucionarlo escribiendo:

sudo apt-get -f install

sin especificar ningún paquete. Debería hacer el trabajo.

Biljkus
fuente
0

Puede haber un problema muy similar con los sistemas i386.

Para resolver el problema, también tuve que degradar gcc-5-base de Versión 5.4.1-2ubuntu1~12.04a 5.4.0-6ubuntu1~16.04.4.

Para completar la actualización a un sistema de apariencia razonable, también tuve que usar dpkg --purge on vituoso_nepomuky virtualbox para deshacerme de sus archivos de configuración, que estaban causando problemas (para mí, VirtualBox es proporcionado por el paquete virtualbox-5.1, que parece indemne por la actualización. )

La clave era ponerse dpkg --configure dbusa trabajar.

Para habilitar wget mientras está en una pantalla de tipo tty, los usuarios también pueden necesitar ejecutar sudo dhclient eth0para habilitar una conexión ethernet con cable.

Richard Wordingham
fuente
0

Acabo de tener este problema al actualizar la distribución de Ubuntu en Linux. Vi 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.20

Pero había dos archivos: libstdc ++. So.6.0.21 y libstdc ++. So.6.0.20

He cambiado el enlace simbólico para que apunte a la última versión 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

Resultante:

libstdc++.so.6 -> libstdc++.so.6cd*
libstdc++.so.6.0.20*
libstdc++.so.6.0.21*
libstdc++.so.6cd -> libstdc++.so.6.0.21*

y todo volvió a la normalidad

Fábio Ricci
fuente
0
  1. Descargue libstdc ++ 6 para su ubuntu desde el sitio web del administrador de paquetes de Ubuntu. (use uname -apara encontrar la arquitectura h / w y s / w).

  2. correr

    sudo dpkg --install --auto-deconfigure libstdc++6...deb
    
  3. Reiniciar. Ubuntu debería arrancar pero apt no instalaría nuevos paquetes.

  4. Para corregir dependencias y actualizar el sistema, ejecute estos comandos

    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  
    
Vormos Zuke
fuente