
Ошибка может немного отличаться от той, что указана в теме, — я переводил ее со своего родного языка.
После того, как все это не удалось, я попробовал сделать так, как указал mjp в этом посте: GLIBCXX_3.4.20 не найден, как исправить эту ошибку?
Но в результате каждая команда - apt-get, mv, cp возвращает ошибку из заголовка темы. Я не могу вернуться к резервной версии файла.
На данный момент я даже не могу войти в Ubuntu. Я застрял на экране входа. Каждый раз, когда я пытаюсь войти, экран становится черным, и я возвращаюсь к входу. Я могу использовать команду только через ctrl+alt+F3
Что я должен делать?
Ответ для steeldriver (пожалуйста, посмотрите комментарий):
lrwxrwxrwx 1 root root 40 Jun 17 21:37 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 -> /usr/lib/x86_64-linux-gnu/libstdc++.so.6
-rw-r--r-- 1 root root 979056 May 7 2016 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.19
lrwxrwrwx 1 root root 19 May 7 2016 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.old -> libstdc++.so.6.0.19
решение1
[Должен признать, что я немного озадачен, почему базовые утилиты, такие как mv
или , cp
могут выйти из строя из-за libstdc++.so.6
, однако, если предположить, что это причина, вот что я бы попробовал]
Ваш busybox ls
вывод показывает, что вам удалось рекурсивно связать /usr/lib/x86_64-linux-gnu/libstdc++.so.6
себя с самим собой. К счастью, похоже, что вы не удалили и не перезаписали фактическую /usr/lib/x86_64-linux-gnu/libstdc++.so.6.19
библиотеку. Поэтому вы должны быть в состоянии восстановиться, повторно создав символическую ссылку.
Проблема будет в том, что один из них или sudo
оба ln
будут полагаться на libstdc++
библиотеку. (Предположительно, bash
нет, поскольку вы можете войти в систему с помощью оболочки на виртуальном терминале Ctrl++ .)AltF3
Если sudo
он сломан, то вы все равно сможете загрузиться в оболочку root из режима восстановления, как описано вКак загрузиться в оболочке root?. Затем вам нужно будет перемонтировать корневую файловую систему в режиме чтения-записи.
mount -o remount,rw /
После этого вы можете попытаться исправить неработающую ссылку.
ln -sf libstdc++.so.6.19 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
(это должно создатьотносительная символическая ссылкакоторый разрешается относительно целевого пути /usr/lib/x86_64-linux-gnu/
, аналогично вашей .old
ссылке).
Предполагая, что это не удается из-за ln
зависимости от libstdc++.so
, вы можете попробовать еще раз, используя статически скомпонованный busybox
исполняемый файл, который имеет встроенный ln
:
/bin/busybox ln -sf libstdc++.so.6.19 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Если это сработает, вы можете использовать exit
оболочку root для продолжения обычной загрузки.