● edもviもcatも使えない危機的状況の回避

以下のように、誤ってローカルなライブラリを消してしまっただけであった。

[root@hoge objdir]# rm -rf /usr/local/gcc4

しかしながら、ただそれだけでほとんどのコマンドが使えない。以下のように
touchやvi、edすら使えない。

[root@hoge objdir]# ed /etc/ld.so.preload
ed: error while loading shared libraries: /usr/local/gcc4/lib/libgcc_s.so.1: cannot open shared object file: No such file or directory

普通はレスキューディスクで立ち上げて直すのだが、なんとリモートログイン
であった。使えるコマンドは、bashの内部コマンドと/sbin以下のコマンドだけ
で/binも使えない状態である。

この状況は、cdとechoで以下のようにようやく回避することができた。

[root@hoge etc]# cd /etc/
[root@hoge etc]# echo -e "/lib\n/usr/lib\n/usr/local/lib" > ld.so.conf-tmp
[root@hoge etc]# echo -e "" > ld.so.cache
[root@hoge etc]# echo -e "" > ld.so.preload
[root@hoge etc]# /sbin/ldconfig -Nf ld.so.conf-tmp

これで、ようやくtouchやviなどが使える状態に回復した。

[root@hoge etc]# cd /tmp/
[root@hoge tmp]# touch testfile
[root@hoge tmp]#


要するに、ld.so.preloadに書かれているライブラリは削除 する前に、先に
ld.so.preloadから除外し、さらにldconfigで全ライブラリをロードし直して
おく必要があるということであった。

戻る