サーバーで、libc.so.6
へのシンボリックリンクが削除されました。現在、システムのバイナリはどれも機能していません。これを修正するために、私は試しました:
/bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6
予想通り、これは私に与えます:
/bin/ln: error while loading shared libraries: libc.so.6:
cannot open shared object file: No such file or directory
私も試しました:
/lib/ld-linux-x86-64.so.2 --inhibit-rpath /lib/libc.so.6 \
--library-path /lib/libc-2.11.3.so \
/bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6
同じ結果。さらに失敗した試みには、cp、mv、catがあります。
私はssh経由で接続していますが、このセッションを閉じた後は別のセッションを開くことができないと思います。 (おそらくbashビルトインを使用して)このシステムを修正する方法はありますか?
[編集]私はしました:
while read line; do echo $line; done < /lib/libc-2.11.3.so > libc.so.6
ファイルをコピーして試してみる:
/lib/ld-linux-x86-64.so.2 --inhibit-rpath libc.so.6 --library-path . \
/bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6
そして得た:
/bin/ln: error while loading shared libraries: ./libc.so.6: ELF file OS ABI invalid
単にldconfig
を実行できます。ほとんどのディストリビューションでは、これを静的バイナリとして出荷しています。
これは私の場合に役立ちました(実際のバージョンはライブラリによって異なります):
ldconfig -l -v /lib/libc-2.13.so
試してください:
LD_PRELOAD=/lib/libc-2.17.so ln -s /lib/libc-2.17.so /lib/libc.so.6
注:実際のバージョンはライブラリによって異なります。
KnoppixなどのライブCDを使用して起動し、実行中のライブシステムから「壊れた」システムでディスクをマウントした後、失われたリンクを修正します。
以前にlsコマンドを実行していて、libcのバージョンがわかっている場合は、
ldconfig -l -v /lib64/libc-2.x.so
ここで、x
は動作するバージョンです。ご使用のバージョンに応じて、lib64またはlibになる可能性があることに注意してください。
私はこれをやっただけでうまくいきました。
つまり、リンクを削除しないでください。悪いアイデア。
注、64ビットの場合:
LD_PRELOAD=libc-2.13.so ln -s libc-2.13.so libc.so.6
これは私にとってはうまくいった
もちろん、そのディレクトリにいない場合は、次のようになります。LD_PRELOAD=/lib/x86_64-linux-gnu/libc-2.13.so ln -s /lib/x86_64-linux-gnu/libc-2.13.so /lib/x86_64-linux-gnu/libc.so.6
以下の回答ありがとうございます。ルートIDでうまく機能しました。リンクを解除しますlibc.so.6
より高いバージョンとリンクしますが、リンクを解除すると突然libc.so.6サーバーが応答しなくなります。 ln -s
コマンドが機能していませんでした。他のユーザーはサーバーにSSH接続できませんでした。しかし、以下のコマンドを実行したときは機能しました。 (libcバージョンがサーバーに存在する場合)サーバーは正常に動作し始めました。
以下は正しいコマンドと命の節約です...
LD_PRELOAD=/lib/libc-2.17.so ln -s /lib/libc-2.17.so /lib/libc.so.6
注:実際のバージョンはライブラリによって異なります
Ubuntuを使用している場合、ldconfigは機能しません。ただ走れ:
/sbin/ldconfig.real