sudo apt-get install libstdc ++


16

Quando provo a installare libstdc++usando:

sudo apt-get install libstdc++

Ricevo l'errore di seguito in Ubuntu. Ne hai idea?

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.

Hai aggiunto di recente qualche ppas?
Raphael,

1
In realtà non esiste un pacchetto chiamato libstdc++(forse stai tentando di installare libstdc++6? A causa dei ++caratteri, quando aptnon trova una corrispondenza esatta tratta il nome del pacchetto come un'espressione regolare, quindi in questo caso sta cercando di installare qualsiasi pacchetto il cui nome partite libstdseguite da una o più c- molte delle quali sono in conflitto, come puoi vedere
steeldriver,

@steeldriver: questa è chiaramente la risposta e imho dovrebbe essere una risposta piuttosto che un commento (anche se sarebbe utile essere in grado di spiegare come evitare di trattare la stringa come regex). La manpage per aptdice che tratterà i nomi dei pacchetti come regex se includono ., ?o *senza menzionare +, quindi il comportamento non è esattamente previsto.
rici,

Risposte:


12

In realtà non esiste un pacchetto chiamato libstdc++(forse stai tentando di installare libstdc++6?)

Quando apt non trova una corrispondenza esatta con il nome di un pacchetto, considera la stringa data come un'espressione regolare. In questo caso, ciò causa il ++tentativo di installare qualsiasi pacchetto il cui nome corrisponde libstda uno o più c, molti dei quali sono in conflitto, come puoi vedere.

Sfortunatamente non sono mai riuscito a capire come disattivare questo comportamento (nulla di ciò che ho provato in passato usando i caratteri di escape sembra funzionare) - l'unica soluzione che conosco è fare attenzione a dare un nome esatto al pacchetto in cui qualsiasi carattere regex potrebbe essere interpretato erroneamente e assicurarsi che il catalogo dei pacchetti sia aggiornato, ad es

sudo apt-get update
sudo apt-get install libstdc++6

questo dovrebbe essere accettato. Per quanto riguarda la disattivazione: si potrebbe scrivere un alias o una funzione che avvolge il nome del pacchetto all'interno di un^PACKAGE$
phil294

11

Per prima cosa esegui questi comandi

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

e poi prova

sudo apt-get install libstdc++6

oppure prova questo risultato di ricerca e installa un pacchetto desiderato dall'elenco http://packages.ubuntu.com/search?keywords=libstdc%2B%2B


2
+1 Buona risposta, ma non è libstdc++incluso nella build-essentials?
Kev Inski,

7
Oh e perché installarlo aptitudese non lo si utilizza per l'installazione libstdc++6?
Kev Inski,

2
Grazie per la tua risposta Kev. Ho provato a dare una sorta di possibilità in caso di insuccesso. E attitudine a gestire il suo errore.
MAK Ripon,

sudo apt-get update apt-get: errore durante il caricamento delle librerie condivise: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: intestazione ELF non valida
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

6
Potresti spiegare perché l'utente deve farlo e cosa fa ogni comando? (nel caso in cui qualcun altro legga la tua risposta e decida di copiarla e incollarla per il problema sbagliato?) ;-)
Fabby
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.