sudo apt-get install libstdc ++

16

Cuando intento instalar libstdc++usando:

sudo apt-get install libstdc++

Recibo el siguiente error en ubuntu. ¿Tienes alguna idea al respecto?

The following packages have unmet dependencies:
 libstdc++-4.8-doc : Conflicts: libstdc++6-4.4-doc but 4.4.7-8ubuntu1 is to be installed
                     Conflicts: libstdc++6-4.6-doc but 4.6.4-6ubuntu2 is to be installed
                     Conflicts: libstdc++6-4.7-doc but 4.7.3-12ubuntu1 is to be installed
 libstdc++-4.9-doc : Conflicts: libstdc++-4.8-doc but 4.8.5-2ubuntu1~14.04.1 is to be installed
                     Conflicts: libstdc++6-4.4-doc but 4.4.7-8ubuntu1 is to be installed
                     Conflicts: libstdc++6-4.6-doc but 4.6.4-6ubuntu2 is to be installed
                     Conflicts: libstdc++6-4.7-doc but 4.7.3-12ubuntu1 is to be installed
 libstdc++-5-doc : Conflicts: libstdc++-4.8-doc but 4.8.5-2ubuntu1~14.04.1 is to be installed
                   Conflicts: libstdc++-4.9-doc but 4.9.3-8ubuntu2~14.04 is to be installed
                   Conflicts: libstdc++6-4.4-doc but 4.4.7-8ubuntu1 is to be installed
                   Conflicts: libstdc++6-4.6-doc but 4.6.4-6ubuntu2 is to be installed
                   Conflicts: libstdc++6-4.7-doc but 4.7.3-12ubuntu1 is to be installed
 libstdc++6-4.6-dbg : Conflicts: libstdc++6-4.4-dbg but 4.4.7-8ubuntu1 is to be installed
 libstdc++6-4.6-doc : Conflicts: libstdc++6-4.4-doc but 4.4.7-8ubuntu1 is to be installed
 libstdc++6-4.7-dbg : Conflicts: libstdc++6-4.4-dbg but 4.4.7-8ubuntu1 is to be installed
                      Conflicts: libstdc++6-4.6-dbg but 4.6.4-6ubuntu2 is to be installed
 libstdc++6-4.7-doc : Conflicts: libstdc++6-4.4-doc but 4.4.7-8ubuntu1 is to be installed
                      Conflicts: libstdc++6-4.6-doc but 4.6.4-6ubuntu2 is to be installed
 libstdc++6-4.8-dbg : Conflicts: libstdc++6-4.4-dbg but 4.4.7-8ubuntu1 is to be installed
                      Conflicts: libstdc++6-4.6-dbg but 4.6.4-6ubuntu2 is to be installed
                      Conflicts: libstdc++6-4.7-dbg but 4.7.3-12ubuntu1 is to be installed
 libstdc++6-4.8-dbg-armhf-cross : Conflicts: libstdc++6-4.7-dbg-armhf-cross but 4.7.3-11ubuntu1cross1.85 is to be installed
 libstdc++6-4.9-dbg : Conflicts: libstdc++6-4.4-dbg but 4.4.7-8ubuntu1 is to be installed
                      Conflicts: libstdc++6-4.6-dbg but 4.6.4-6ubuntu2 is to be installed
                      Conflicts: libstdc++6-4.7-dbg but 4.7.3-12ubuntu1 is to be installed
                      Conflicts: libstdc++6-4.8-dbg but 4.8.5-2ubuntu1~14.04.1 is to be installed
 libstdc++6-5-dbg : Conflicts: libstdc++6-4.4-dbg but 4.4.7-8ubuntu1 is to be installed
                    Conflicts: libstdc++6-4.6-dbg but 4.6.4-6ubuntu2 is to be installed
                    Conflicts: libstdc++6-4.7-dbg but 4.7.3-12ubuntu1 is to be installed
                    Conflicts: libstdc++6-4.8-dbg but 4.8.5-2ubuntu1~14.04.1 is to be installed
                    Conflicts: libstdc++6-4.9-dbg but 4.9.3-8ubuntu2~14.04 is to be installed
E: Unable to correct problems, you have held broken packages.
usuario2856923
fuente
¿Recientemente agregaste alguna ppas?
Raphael
1
En realidad no hay un paquete llamado libstdc++(¿posiblemente estás tratando de instalarlo libstdc++6? Debido a los ++caracteres, cuando aptno encuentra una coincidencia exacta, trata el nombre del paquete como una expresión regular, por lo que en este caso está tratando de instalar cualquier paquete cuyo nombre partidos libstdseguidos de uno o más c, muchos de los cuales entran en conflicto, como puede ver.
steeldriver
@steeldriver: esa es claramente la respuesta y, en mi opinión, debería ser una respuesta en lugar de un comentario (aunque sería útil poder explicar cómo evitar tratar la cadena como una expresión regular). La página de manual aptdice que tratará los nombres de paquetes como expresiones regulares si incluyen ., ?o *sin mencionar +, por lo que el comportamiento no se espera exactamente.
rici

Respuestas:

12

En realidad no hay un paquete llamado libstdc++(¿posiblemente estás intentando instalarlo libstdc++6?)

Cuando apt no encuentra una coincidencia exacta con el nombre de un paquete, trata la cadena dada como una expresión regular. En este caso, ++hace que intente instalar cualquier paquete cuyo nombre coincida libstdseguido de uno o más c, muchos de los cuales entran en conflicto, como puede ver.

Desafortunadamente, nunca he logrado encontrar la manera de desactivar este comportamiento (nada de lo que he intentado en el pasado usando caracteres de escape parece funcionar): la única solución que sé es tener cuidado de dar un nombre de paquete exacto donde los caracteres regex puede malinterpretarse y asegurarse de que el catálogo de paquetes esté actualizado, es decir

sudo apt-get update
sudo apt-get install libstdc++6
conductor de acero
fuente
Esto debe ser aceptado. Con respecto al apagado: uno podría escribir un alias o función que envuelva el nombre del paquete dentro de un^PACKAGE$
phil294
11

Primero ejecuta estos comandos

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install build-essential
sudo apt-get install aptitude

y luego intenta

sudo apt-get install libstdc++6

o pruebe este resultado de búsqueda e instale un paquete deseado de http://packages.ubuntu.com/search?keywords=libstdc%2B%2B

MAK Ripon
fuente
2
+1 Buena respuesta, pero ¿no está libstdc++incluida en el build-essentials?
Kev Inski
77
Ah, ¿y por qué instalar aptitudesi no lo usas para instalar libstdc++6?
Kev Inski
2
Gracias por tu respuesta Kev. Traté de dar algún tipo de posibilidades en caso de no tener éxito. Y aptitud para manejar su error.
MAK Ripon
sudo apt-get update apt-get: error al cargar bibliotecas compartidas: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: encabezado ELF no válido
mvladk
3
LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
Venkat Kotra
fuente
66
¿Podría explicar por qué el usuario debe hacer esto y qué hace cada comando? (solo en caso de que alguien más lea su respuesta y decida simplemente copiarla y pegarla por el problema incorrecto) ;-)
Fabby el