sudo apt-get install libstdc ++

16

Ketika saya mencoba menginstal libstdc++menggunakan:

sudo apt-get install libstdc++

Saya mendapatkan kesalahan di bawah ini di ubuntu. Apakah Anda punya ide tentang itu?

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.
pengguna2856923
sumber
Apakah Anda baru saja menambahkan ppas?
Raphael
1
Sebenarnya tidak ada paket yang disebut libstdc++(mungkin Anda mencoba untuk menginstal libstdc++6? Karena ++karakter, ketika apttidak menemukan kecocokan yang tepat itu memperlakukan nama paket sebagai ekspresi reguler sehingga dalam hal ini mencoba untuk menginstal paket apa pun yang namanya pertandingan libstddiikuti oleh satu atau lebih c- banyak di antaranya konflik, seperti yang Anda lihat
steeldriver
@steeldriver: yang jelas jawabannya dan imho harus menjadi jawaban daripada komentar (walaupun itu akan membantu untuk dapat menjelaskan bagaimana menghindari memperlakukan string sebagai regex). Halaman manual untuk aptmengatakan bahwa itu akan memperlakukan nama paket sebagai regex jika mereka memasukkan ., ?atau *tanpa menyebutkan +, sehingga perilaku tersebut tidak benar-benar diharapkan.
rici

Jawaban:

12

Sebenarnya tidak ada paket bernama libstdc++(mungkin Anda mencoba menginstal libstdc++6?)

Ketika apt tidak menemukan yang sama persis dengan nama paket, itu memperlakukan string yang diberikan sebagai ekspresi reguler. Dalam hal ini, ++penyebabnya adalah mencoba menginstal paket apa saja yang namanya cocok libstddiikuti oleh satu atau lebih c- banyak konflik, seperti yang Anda lihat.

Sayangnya saya tidak pernah berhasil menemukan cara untuk mematikan perilaku ini (tidak ada yang saya coba di masa lalu menggunakan karakter escape tampaknya berhasil) - satu-satunya solusi yang saya tahu adalah berhati-hati untuk memberikan nama paket yang tepat di mana setiap karakter regex mungkin disalahartikan, dan untuk memastikan katalog paket adalah terbaru yaitu

sudo apt-get update
sudo apt-get install libstdc++6
Steeldriver
sumber
ini harus diterima. Mengenai turn-off: seseorang dapat menulis alias atau fungsi yang membungkus nama paket di dalam^PACKAGE$
phil294
11

Pertama jalankan perintah ini

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

lalu coba

sudo apt-get install libstdc++6

atau coba hasil pencarian ini dan instal satu paket yang diinginkan dari http://packages.ubuntu.com/search?keywords=libstdc%2B%2B terdaftar

MAK Ripon
sumber
2
+1 Jawaban bagus, tetapi bukankah ini libstdc++termasuk dalam build-essentials?
Kev Inski
7
Oh dan mengapa menginstal aptitudejika Anda tidak menggunakannya untuk menginstal libstdc++6?
Kev Inski
2
Terima kasih atas balasan Anda, Kev. Saya mencoba memberikan beberapa kemungkinan jika tidak berhasil. Dan bakat untuk menangani kesalahannya.
MAK Ripon
sudo apt-get update apt-get: error saat memuat pustaka bersama: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: header ELF tidak valid
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
sumber
6
Bisakah Anda menjelaskan mengapa pengguna harus melakukan ini dan apa yang dilakukan masing-masing perintah? (untuk berjaga-jaga jika ada orang lain yang membaca jawaban Anda dan memutuskan untuk menyalin-menempelkannya untuk masalah yang salah?) ;-)
Fabby