萩萩日記

世界に5人くらい存在するかもしれない僕のファンとドッペルゲンガーに送る日記

Gentooの/varが壊れた場合

Gentoo Linuxマシンの/varが壊れたらどうしたら良いのかというのをちょっと考えてみるわけであるがそんなに詳しくなかったりするので間違いとかあったら指摘してみてくださいな。

/varが壊れたらつまり/var/db/pkgが壊れてしまうわけで、インストールしたパッケージのデータベースが壊れてしまうわけである。かつ、ヒントになりそうな、/var/log/emerge.logも/var/lib/portage/worldも/var/tmp/portageも全部、/varに存在したりするのだ。こりゃ参った。じゃあもう、どのパッケージをインストールしたかは記憶に頼るしかないのかなと、一瞬そう思ったのだけどここで思い出した。/usr/share/docがあるね。もちろんドキュメントをインストールしないパッケージもあるんだけど、そこはそれ、オール・オア・ナッシング思考はよくないって何かの本にも書いてあったことだし。

というわけで、以下のようなことをやってみる。

# cat hoge.pl
while(<>){
  s/
    -
    ([\d\.]+(?:[a-zA-Z])?)?           # version
    _?
    (?:(alpha|beta|pre|rc|p)(\d+)?)?  # suffix
    (?:-r([\d\.]+))?                  # revision
    $
  //x;
  print;
}
# ls /usr/share/doc | perl hoge.pl | sort | uniq > hoge.list
# emerge -Duvp `cat hoge.list`

何度か「そんなパッケージないよ」とか「analogだけじゃわかんない。app-admin/analogなの?それともapp-emacs/analogなの?」とか「そのパッケージはマスクされてますな」とか、そういうことを言われるわけだけど、そのたびにリストを直していくと。で、最後にエラーが出なくなったところで、

# emerge -Duv `cat hoge.list`

とするわけですね。

ええ、そうです。/varが壊れていない人にとっての、

# emerge -ev world

みたいなもんです。そう、だから時間は、ものすごーくかかります。が、まあなんというか、秋の夜長はコンパイル、みたいな。