sudo apt-get install libstdc ++


16

Коли я намагаюся встановити, libstdc++використовуючи:

sudo apt-get install libstdc++

Я отримую нижче помилку в ubuntu. Чи маєте ви про це уявлення?

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.

Ви нещодавно додали пап?
Рафаель

1
Насправді не існує пакета, який називається libstdc++(можливо, ви намагаєтесь встановити libstdc++6? Через ++символи, коли aptне знаходить точної відповідності, він трактує ім'я пакету як регулярний вираз, тому в цьому випадку він намагається встановити будь-який пакет, ім'я якого матчі, libstdза якими слідує один чи кілька c- багато з яких конфліктують, як ви бачите.
steeldriver

@steeldriver: це однозначно відповідь, а imho має бути відповіді, а не коментарем (хоча це допоможе пояснити, як уникнути трактування рядка як регулярного вираження). На сторінці Довідник aptкаже , що він буде розглядати імена пакетів , як регулярні вирази , якщо вони включають в себе ., ?або *без згадки +, так що поведінка точно не очікуються.
rici

Відповіді:


12

Насправді пакет не називається libstdc++ (можливо, ви намагаєтесь встановити libstdc++6?)

Коли apt не знаходить точної відповідності імені пакета, він розглядає даний рядок як регулярний вираз. У цьому випадку ++причини викликають спробу встановити будь-який пакет, ім'я якого збігається libstdз одним або кількома c- багато з яких конфліктують, як ви бачите.

На жаль, мені ніколи не вдалося зрозуміти, як відключити цю поведінку (нічого, що я намагався в минулому, використовуючи символи втечі, здавалося, працює) - єдине, що я знаю, це бути обережним, щоб вказати точну назву пакета, де будь-які символи регексу. може бути неправильно трактовано, і щоб переконатися, що каталог пакунків оновлений, тобто

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

це слід прийняти. Щодо відключення: можна написати псевдонім або функцію, яка загортає ім'я пакета всередині^PACKAGE$
phil294

11

Спочатку запустіть ці команди

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

а потім спробуйте

sudo apt-get install libstdc++6

або спробуйте цей результат пошуку та встановіть потрібний пакет із переліченого http://packages.ubuntu.com/search?keywords=libstdc%2B%2B


2
+1 Хороша відповідь, але чи не libstdc++входить у програму build-essentials?
Кев Іньський

7
О, і навіщо встановлювати, aptitudeякщо ви не використовуєте його для встановлення libstdc++6?
Кев Інський

2
Дякуємо за Вашу відповідь Kev Я намагався дати якісь можливості у випадку невдачі. І здатність поводитися з його помилкою.
MAK Ripon

sudo apt-get update apt-get: помилка під час завантаження спільних бібліотек: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: недійсний заголовок ELF
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
Чи можете ви пояснити, чому користувач повинен це робити і що робить кожна команда? (про всяк випадок, якщо хтось інший прочитає вашу відповідь і вирішить просто скопіювати і вставити її для неправильної проблеми?) ;-)
Fabby
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.