Как зафиксировать поврежденный libstdc ++ 6, который также повреждается склонный

Я, кажется, испортил что-то с руководством gcc обновите когда-то в прошлом, который не стал проблемой до сих пор, когда я обновил от 14,04 до 16,04. А именно, система, кажется, думает что libstdc++6 версия в порядке, в то время как apt (и много других программ), жалуются, что это не (потому что общая библиотека находится на самом деле в неверной версии):

sudo apt-get install --fix-broken --fix-missing
apt-get: 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

Система даже не запускает графический режим, вышеупомянутый вывод был получен с помощью неграфической консоли (использование Ctrl-Alt-F6), и apt самостоятельно абсолютно неприменимо, таким образом, я не могу только сделать чего-то как переустанавливание.

Как я могу зафиксировать и переустановить эти пакеты, когда программа, которую я использую для управления ими самого, затронута и неприменима?

6
задан 30 August 2016 в 11:28

1 ответ

Сначала, я смог получить графическую оболочку входа в систему путем ручного копирования libstdc++.so.6.0.21 в ее место от Живой карты с интерфейсом USB и создания ссылки на него от libstdc++.so.6. Я использовал эту точную версию, потому что это, кажется, значение по умолчанию для Ubuntu 16.04 и также содержит эти "21" упомянутый в сообщении об ошибке ("версия GLIBCXX_3.4.21").

, В то время как это, казалось, удовлетворило графический стек, те же ошибки остались с apt и другие программы в зависимости от libstdc ++ 6. После некоторой попытки я мог разрешить, что все это со следующими шагами, с помощью dpkg к вручную (ООН) устанавливает вещи:

  • Загрузка deb файлы в правильных версиях для 16,04:

    wget http://mirrors.kernel.org/ubuntu/pool/main/a/apt/apt_1.2.10ubuntu1_amd64.deb http://mirrors.kernel.org/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb
    
  • Удаление этой определенной версии, которая заблокировала установку корректного libstdc ++ 6:

    sudo dpkg --force-depends -r libstdc++6:i386
    
  • Затем устанавливают "хорошую" версию из файлов:

    sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb apt_1.2.10ubuntu1_amd64.deb
    
  • И наконец, зафиксируйте путаницу, которую я оставил при обновлении и испытании вещей:

    sudo apt-get install -f
    
6
ответ дан 23 November 2019 в 07:48

Другие вопросы по тегам:

Похожие вопросы: