sudo apt-get installiere libstdc ++

16

Wenn ich versuche zu installieren libstdc++mit:

sudo apt-get install libstdc++

Ich erhalte den folgenden Fehler in Ubuntu. Hast du eine Ahnung davon?

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.
user2856923
quelle
Hast du kürzlich ppas hinzugefügt?
Raphael
1
Es gibt eigentlich kein Paket mit dem Namen libstdc++(möglicherweise möchten Sie es installieren libstdc++6? ++Wenn aufgrund der Zeichen aptkeine genaue Übereinstimmung gefunden wird, wird der Paketname als regulärer Ausdruck behandelt. In diesem Fall wird also versucht, jedes Paket zu installieren, dessen Name angegeben ist Streichhölzer libstdgefolgt von einem oder mehreren c- wie Sie sehen können
Konflikten
@steeldriver: das ist eindeutig die Antwort und imho sollte eher eine Antwort als ein Kommentar sein (obwohl es hilfreich wäre zu erklären, wie man es vermeidet, den String als Regex zu behandeln). Die Manpage aptsagt , dass es Paketnamen als reguläre Ausdrücke behandeln, wenn sie gehören ., ?oder *ohne zu erwähnen +, so wird das Verhalten nicht genau erwartet.
rici

Antworten:

12

Es gibt eigentlich kein Paket mit dem Namen libstdc++(möglicherweise versuchen Sie, es zu installieren libstdc++6?)

Wenn apt keine exakte Übereinstimmung mit einem Paketnamen findet, wird die angegebene Zeichenfolge als regulärer Ausdruck behandelt. In diesem Fall ++wird versucht, ein Paket zu installieren , dessen Name libstdmit einem oder mehreren übereinstimmt. cWie Sie sehen, treten viele Konflikte auf.

Leider habe ich es nie geschafft, dieses Verhalten zu deaktivieren (nichts, was ich in der Vergangenheit mit Escape-Zeichen versucht habe, hat anscheinend funktioniert) - die einzige mir bekannte Lösung besteht darin, darauf zu achten, einen genauen Paketnamen anzugeben, in dem Regex-Zeichen vorkommen möglicherweise falsch interpretiert und um sicherzustellen, dass der Paketkatalog aktuell ist, d. h

sudo apt-get update
sudo apt-get install libstdc++6
Stahlfahrer
quelle
dies sollte akzeptiert werden. Zum Ausschalten: Man könnte einen Alias ​​oder eine Funktion schreiben, die den Paketnamen in ein^PACKAGE$
phil294
11

Führen Sie zuerst diese Befehle aus

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

und dann versuche es

sudo apt-get install libstdc++6

Oder versuchen Sie dieses Suchergebnis und installieren Sie ein gewünschtes Paket aus der Liste http://packages.ubuntu.com/search?keywords=libstdc%2B%2B

MAK Ripon
quelle
2
+1 Gute Antwort, aber ist das nicht libstdc++im build-essentials enthalten?
Kev Inski
7
Oh und warum installieren, aptitudewenn Sie es nicht für die Installation verwenden libstdc++6?
Kev Inski
2
Danke für deine Antwort Kev. Ich habe versucht, im Falle eines Misserfolgs einige Möglichkeiten aufzuzeigen. Und die Fähigkeit, mit seinem Fehler umzugehen.
MAK Ripon
sudo apt-get update apt-get: Fehler beim Laden der gemeinsam genutzten Bibliotheken: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: ungültiger ELF-Header
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
quelle
6
Können Sie erklären, warum der Benutzer dies tun muss und was jeder Befehl tut? (Nur für den Fall, dass jemand anderes Ihre Antwort liest und sich dafür entscheidet, sie einfach für das falsche Problem
einzufügen