先日、手がすべって(自宅のマシンで)coreutilsをばっさり削除してしまいました。
coreutilsとはなにかというと、CUIでなにかしらのオペレーションを行うときに必要になるコマンドのセットです。
/bin/cat /bin/tac /bin/cp /bin/dd /bin/echo /bin/false /bin/ln /bin/ls /bin/mkdir /bin/mknod /bin/mv /bin/rm (snip)
なのでこれを消してしまうと、ファイルを消したりディレクトリを作ったりできないけどFirefoxは動くというよくわからない状態になります。
ホホホーなんてひとしきり遊んでから、さて直すかと思ったんですが、件のマシンはソースからコンパイルするタイプのパッケージシステムなんで、バイナリがありませぬ。ではではとコンパイルするにもcoreutilsなコマンド使いまくりのconfigureが完了するわけもなくー
結局、他のマシンの busybox (Debian etchのbusybox-static) をもってきて、それを使ってcoreutilsをインストールしなおして復旧。
busyboxは、coreutilsを含むGNUの*utilsシリーズのコマンドのサブセット(的なもの)。リソースの少ない環境での使用を念頭においているので、FDで起動するLinux(なつい)とかLinuxベースのPDAとかで使われてるのを見た人も多いんじゃないかと思います。
で、一式コマンドが揃っているので、こっそりインストールしておくとこういうときに役に立つわけです。
あとレスキュー目的で入れるんなら、busyboxはstatic版の方がいいんじゃないかと思います:
- /lib/*が消失してもstaticなら使えるのでまだ戦える
- ディストリとか違っても他のマシンにコピーして助けてあげられる
そんなわけで、staticなbusyboxを入れて、
$ ls -l /static/ lrwxrwxrwx 1 root root 12 Apr 20 14:40 [ -> /bin/busybox lrwxrwxrwx 1 root root 12 Apr 20 14:40 [[ -> /bin/busybox lrwxrwxrwx 1 root root 12 Apr 20 14:40 addgroup -> /bin/busybox lrwxrwxrwx 1 root root 12 Apr 20 14:40 adduser -> /bin/busybox lrwxrwxrwx 1 root root 12 Apr 20 14:40 adjtimex -> /bin/busybox lrwxrwxrwx 1 root root 12 Apr 20 14:40 ar -> /bin/busybox lrwxrwxrwx 1 root root 12 Apr 20 14:40 arp -> /bin/busybox lrwxrwxrwx 1 root root 12 Apr 20 14:40 arping -> /bin/busybox lrwxrwxrwx 1 root root 12 Apr 20 14:40 ash -> /bin/busybox (snip)
なんていうsymlinkをはりまくりました。多分、3年後ぐらいに同じヘマをやって「あの日にbusyboxインストールしたオレに感謝!」なエントリを書くことになると思います。
最後に1つ(以前、師匠に教わった)TIPSを。
- ls が使えなくても、echo * でファイルの一覧は見られる