Вы обновили свою libc (самую базовую системную библиотеку), и теперь ни одна программа не работает. Если быть точным, динамически связанная программа не работает.
В вашем конкретном случае перезагрузка должна работать. Для установленной сейчас libc требуется более новое ядро, и если вы перезагрузитесь, вы должны получить это более новое ядро.
Пока у вас есть работающая оболочка, часто есть способ ее восстановить, но это может быть сложно, если вы не планировали ее. Если у вас нет оболочки, то обычно нет иного решения, кроме перезагрузки.
Здесь вы не сможете восстановить без перезагрузки, но вы можете по крайней мере легко узнать, какое ядро работает. Просто используйте способ чтения /proc/version
, который не требует внешней команды.
read v </proc/version; echo $v
echo $(</proc/version) # in zsh/bash/ksh
Если у вас все еще есть копия старого libc, вы можете запускать программы с ним. Например, если старая библиотека libc включена /old/lib
и у вас есть исполняемые файлы, которые работают с этой старой библиотекой libc /old/bin
, вы можете запустить
LD_LIBRARY_PATH=/old/lib /old/lib/ld-linux.so.2 /old/bin/uname
Если у вас есть статически связанные двоичные файлы, они все равно будут работать. Я рекомендую установить статистически связанные системные утилиты для такого рода проблем (но вы должны сделать это до того, как проблема начнется). Например, в Debian / Ubuntu / Mint /… установите один или несколько из busybox-static (набор базовых инструментов командной строки Linux, включая оболочку), sash (shell с некоторыми дополнительными встроенными функциями), zsh-static (просто оболочка, но с довольно много встроенных удобных инструментов).
busybox-static uname
sash -c '-cat /proc/version'
zsh-static -c '</proc/version'