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(いくつかの追加ビルトインシェル)、zsh-static(シェルだけですが、かなりの数の便利なツールが組み込まれています)。
busybox-static uname
sash -c '-cat /proc/version'
zsh-static -c '</proc/version'