sudo apt-get install libstdc ++


16

libstdc++Kullanarak yüklemeye çalıştığımda :

sudo apt-get install libstdc++

Ubuntu aşağıdaki hatayı alıyorum. Bunun hakkında bir fikrin var mı?

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.

Yakın zamanda hiç ppas eklediniz mi?
Raphael

1
Aslında denilen bir paket yok libstdc++(muhtemelen yüklemeye çalışıyorsunuz libstdc++6? ++Karakterler nedeniyle, apttam bir eşleşme bulunmadığında, paket adını normal bir ifade olarak ele alır, bu durumda adı olan herhangi bir paketi yüklemeye çalışır. Maçlar libstdbir veya daha fazla c- birçoğu görebileceğiniz gibi, çatışması
ediyor

@steeldriver: bu açıkça bir cevaptır ve imho bir yorumdan ziyade bir cevap olmalıdır (her ne kadar dizeye regex olarak davranılmasının nasıl önlenebileceğini açıklasa da). İçin manpage aptonlar eklerseniz regexes olarak paket isimlerini muamele edeceğini söylüyor ., ?ya *söz etmeden +, yani davranış tam olarak beklenmemektedir.
rici

Yanıtlar:


12

Aslında adlı bir paket yok libstdc++(muhtemelen yüklemeye çalışıyorsunuz libstdc++6?)

Apt bir paket adıyla tam eşleşme bulamadığında, verilen dizeye normal ifade olarak davranır. Bu durumda, adıyla eşleşen bir paketi veya bir veya daha fazlasını izleyen herhangi bir paketi ++yüklemeye çalışmasına neden olur - birçoğu görebileceğiniz gibi.libstdc

Ne yazık ki bu davranışı nasıl kapatacağımı anlayamadım (kaçış karakterlerini kullanarak geçmişte denediğim hiçbir şey işe yaramadı) - bildiğim tek çözüm, herhangi bir regex karakterine tam bir paket adı vermek için dikkatli olmaktır yanlış yorumlanabilir ve paket kataloğunun güncel olduğundan emin olmak için yani

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

bu kabul edilmelidir. ^PACKAGE$
Kapatmayla

11

İlk önce bu komutları çalıştırın

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

ve sonra dene

sudo apt-get install libstdc++6

veya bu arama sonucunu deneyin ve listelenen http://packages.ubuntu.com/search?keywords=libstdc%2B%2B adresinden istediğiniz bir paketi yükleyin


2
+1 İyi yanıt, ancak s'ye libstdc++dahil değil build-essentialmi?
Kev Inski

7
Oh ve kurulum aptitudeiçin kullanmıyorsanız neden kuruyorsunuz libstdc++6?
Kev Inski

2
Cevabınız için teşekkürler Kev. Başarısızlık durumunda bir çeşit olasılık vermeye çalıştım. Ve hatasını işleme yeteneği.
MAK Ripon

sudo apt-get update apt-get: paylaşılan kütüphaneleri yüklerken hata: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: geçersiz ELF üstbilgisi
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
Kullanıcının bunu neden yapması gerektiğini ve her komutun ne yaptığını açıklayabilir misiniz? (başka birinin cevabınızı okuması ve yanlış sorun için kopyalayıp yapıştırmaya karar vermesi durumunda?) ;-)
Fabby
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.