apt: ошибка перемещения: версия GLIBCXX_3.4.21 не определена в файле libstdc ++. so.6 со ссылкой на ссылку

53

Поскольку я пытаюсь обновить до 16.04 xenial, я получаю

$ apt
apt: relocation error: /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0: 
symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_, 
version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

при простом запуске apt . Излишне говорить, что это затрудняет что-либо сделать.

Любые подсказки?

    
задан Nico Schlömer 26.05.2016 в 16:11
источник

11 ответов

24

Преступник находится в обратном порядке из PPA для загрузок программных файлов Ubuntu (ограниченный) , в частности

/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22

Есть две возможности иметь дело с этим:

  • У вас уже установлено ppa-purge . Тогда

    sudo ppa-purge ppa:ubuntu-toolchain-r/test
    

    устраняет проблемы.

  • Переопределите libstc ++, загрузив libstdc ++ 6 для Xenial и установив его через dpkg -i .

ответ дан Nico Schlömer 26.05.2016 в 16:58
источник
44

У меня была такая же проблема, вызванная проблемами PPA для инструментальной привязки Ubuntu. Из-за этого мой компьютер не загружается. Следуя комментарию @ w00kie на его ответ, я загрузил (с терминала tty) debian пакета libstdc++6 для Xenial при ссылке Ссылка и установлен с использованием dpkg -i . Сейчас компьютер отлично работает.

    
ответ дан Sagar Jha 28.06.2016 в 22:47
8

Мой комп не смог правильно загрузить из-за этой ошибки. Apt-get не работал, и не был Gnome. Это было сразу после обновления с 14.04 по 16.04. Я решил это в tty, введя

sudo apt-add-repository --remove ppa:ubuntu-toolchain-r/test

В этот момент apt-get снова начал работать, и я смог исправить все там:

sudo apt-get clean
sudo apt-get update
sudo apt-get install -f
sudo dpkg -a --configure
sudo apt-get dist-upgrade

Мне также пришлось удалить Virtualbox (после команды update) и восстановить его позже, но я думаю, что это было не связано.

    
ответ дан Matjaz 17.08.2016 в 17:48
4

Я думал, что проблема была чем-то уникальным для меня и была вызвана ошибкой загрузки.

Это обсуждение дало мне ключ, который мне нужен. В принципе, все, что было необходимо, это заменить libstdc ++. So.6.0.22 с помощью libstdc ++. So.6.0.21 в / usr / lib / x86_64-linux-gnu неисправной системы. (Кажется, в новой версии есть ошибка.)

Это можно сделать с помощью большого пальца или, как в моем случае, с нуля.

Подробная информация: Ссылка

Спасибо всем ...

    
ответ дан SteelTrap 15.09.2016 в 21:12
3

Следуя подходу dpkg -i в принятом ответе, мой 14.04- > 16.04 обновление требовало не одного, а двух пакетов:

gcc-5-base_5.4.0-6ubuntu1~16.04.4_i386.deb
libstdc++6_5.4.0-6ubuntu1~16.04.4_i386.deb

После этого apt upgrade смог загрузить оставшиеся пакеты и завершить установку.

    
ответ дан user1905416 04.05.2017 в 05:51
1

Если у вас установлена последняя версия «заклинания», установленного с помощью Snappy on Yakkety, ваш apt будет разбит с очень похожей ошибкой:

apt: relocation error: /usr/lib/x86_64-linux-gnu/libapt-private.so.0.0: symbol _ZN13pkgSourceList16AddVolatileFilesER11CommandLinePSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EE, version APTPKG_5.0 not defined in file libapt-pkg.so.5.0 with link time reference

из-за этой ошибки:

Ссылка

В настоящее время единственным обходным решением, о котором я знаю, является удаление привязанной привязки (или, возможно, «привязка» вернется к предыдущей версии, если вы уже установили ее ранее).

    
ответ дан Ivy 30.03.2017 в 14:57
0

Вы можете исправить это, набрав:

sudo apt-get -f install

без указания какого-либо пакета. Он должен выполнять эту работу.

    
ответ дан biljkus 26.09.2016 в 13:32
0

В системах i386 может возникнуть очень похожая проблема.

Чтобы решить эту проблему, мне также пришлось понизить gcc-5-base от версии 5.4.1-2ubuntu1~12.04 до 5.4.0-6ubuntu1~16.04.4 .

Чтобы завершить обновление до разумно выглядящей системы, мне также пришлось использовать dpkg --purge on vituoso_nepomuk и virtualbox, чтобы избавиться от файлов конфигурации, которые вызывали проблемы (для меня VirtualBox предоставляется пакетом virtualbox-5.1, который кажется невредимым при обновлении.)

Ключ должен был заставить dpkg --configure dbus работать.

Чтобы включить wget, находясь на экране типа tty, пользователям также может потребоваться выполнить sudo dhclient eth0 , чтобы включить проводное Ethernet-соединение.

    
ответ дан Richard Wordingham 20.11.2016 в 01:11
0

Исправление, которое сработало для меня, состояло в том, чтобы на самом деле добавить Ubuntu toolchain ppa обратно:

sudo apt-add-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -f
sudo apt-get upgrade
    
ответ дан Christopher Roberts 21.02.2017 в 22:31
0

У меня была эта проблема при обновлении дистрибутива ubuntu на linux Я видел это:

# ls /usr/lib/x86_64-linux-gnu/libstdc++.so.6*
libstdc++.so.6 -> libstdc++.so.6cd*
libstdc++.so.6.0.20*
libstdc++.so.6.0.21
libstdc++.so.6cd -> libstdc++.so.6.0.20*

libstdc ++. so.6 - > libstdc ++. so.6cd - > <Сильный> libstdc ++. So.6.0.20

Но было два файла: libstdc ++. so.6.0.21 и libstdc ++. so.6.0.20

Я изменил символическую ссылку, чтобы указать на последнюю версию libstdc ++. so.6.0.21

cd /usr/lib/x86_64-linux-gnu
rm libstdc++.so.6cd
chmod +x libstdc++.so.6.0.21
ln -s  libstdc++.so.6.0.21 libstdc++.so.6cd

В РЕЗУЛЬТАТЕ:

libstdc++.so.6 -> libstdc++.so.6cd*
libstdc++.so.6.0.20*
libstdc++.so.6.0.21*
libstdc++.so.6cd -> libstdc++.so.6.0.21*

и все вернулось к нормальному

    
ответ дан Fábio Ricci 09.04.2017 в 14:26
0
  1. Загрузите libstdc ++ 6 для своего ubuntu с веб-сайта менеджера пакетов Ubuntu. (используйте uname -a , чтобы найти h / w и s / w-архитектуру).

  2. Run

    sudo dpkg --install --auto-deconfigure libstdc++6...deb
    
  3. Reboot

    . Ubuntu должен загружаться, но apt не будет устанавливать новые пакеты.

  4. Чтобы исправить зависимости и обновить систему, запустите эти команды

    sudo apt-add-repository ppa:ubuntu-toolchain-r/test
    sudo apt-get update
    sudo apt-get install -f
    sudo apt-get upgrade
    sudo apt-get dist-upgrade
    sudo apt-get autoclean && sudo apt-get autoremove  
    
ответ дан Vormos Zuke 26.07.2017 в 11:07