mv: невозможно открыть файл общего объекта "libstdc++.so.6": слишком большое вложение символических ссылок

mv: невозможно открыть файл общего объекта "libstdc++.so.6": слишком большое вложение символических ссылок

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

После того, как все это не удалось, я попробовал сделать так, как указал 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 для продолжения обычной загрузки.

Связанный контент