Если бы мне представился второй шанс, я бы перепроверил его, но случайно запустил sudo ln -sf something / usr / lib / x86_64-linux- gnu / libc-2.31.so
. И нет другой копии glibc, потому что это настоящий общий объект, а не символическая ссылка.
Так как я могу оправиться от этого? Я думаю, мне, возможно, придется получить еще одну копию glibc, загрузить машину с USB-устройства и скопировать чистый libc-2.31.so
в / usr / lib / x86_64-linux-gnu
.
Как правильно это делать? Мне также нужно перестроить символические ссылки libc.so.6
в / lib / x86_64-linux-gnu
и / usr / lib / x86_64-linux-gnu
]?
Не создавайте симлинки в папках, которые контролируются APT!!!
Вы сломаете систему и/или создадите кошмар для ее дальнейшего обслуживания!!!
Для восстановления ситуации переустановите пакет libc6 по
sudo apt-get update
sudo apt-get install --reinstall libc6
и в следующий раз не трогайте симлинки.
Если вы хотите поиграть с системой - делайте это в /usr/local/bin
, который находится вне контроля APT.
Примечание: на свежем минимальном 20.04 LTS есть только один файл с именем libc-2.31.so - см.
# find / -name libc-2.31.so /usr/lib/x86_64-linux-gnu/libc-2.31.so
и один с именем libc.so.6:
# find / -name libc.so.6 /usr/lib/x86_64-linux-gnu/libc.so.6
пока они симлинкованы следующим образом (центральная часть заменена на (...)
):
# ls -al /usr/lib/x86_64-linux-gnu/libc-2.31.so /usr/lib/x86_64-linux-gnu/libc.so.6 -rwxr-xr-x (...) /usr/lib/x86_64-linux-gnu/libc-2.31.so lrwxrwxrwx (...) /usr/lib/x86_64-linux-gnu/libc.so.6 -> libc-2.31.so
Оба предоставляются libc6
deb-пакетом.