自宅サーバーは FedoraCore6 を使っているのですが、先日 yum update した際に調子が悪くない update 出来ない状況になりました。kernel が update されていたので、うまく yum が対応出来てないのかなって思っていたのですが、エラーメッセージを良く読むと、データベースが壊れたとあります。
ん〜データベースってそんな簡単に壊れるのか?と思っていたら yum は BerkeleyDB を使っているみたいです。噂で BerkeleyDB は古くからあるけど、ちょっと壊れやすいと聞いていたので、ちょっと故障に納得w だけど yum って BerkeleyDB を使っていたのね。
どうやら調べたところ、一度壊れてしまったら BerkeleyDB は修理の仕様がないみたいです。バックアップをとってあったら話はべつなんでしょうが、壊れてから yum で BerkeleyDB を使ってたことを知った僕としては、当然バックアップなんかとってあるはずもなく、どうしようもないと。だけど、どうにかしないと yum が使えないのでセキュリティー周りの update も出来ない。そりゃ困る。
BerkeleyDB 再構築
っでどうすれば良いのかと言うと、壊れた BerkeleyDB のデータを消すなりリネームしておき、新しく再構築すれば済む問題でした。そのデータ自体は /var/lib/rpm/ 以下に __db.000〜003 って名前で入っているのでこれをごにょごにょとすると。そしてデータベースをリビルドっといった具合。やり方を書いておくと
% cd /var/lib/rpm/
% rm __db.000 __db.001 __db.002 __db.003
% rpm --rebuilddb
その後、ちゃんと yum が使えるか確認
% yum update
とか
% yum list
なんだかんだ文章にすると長くなるんですけど(僕が無理矢理長くしてる)、やっていることは簡単なんで 1,2 分で終了しますw
雑感
サーバー触ってて思うんですけど、やっぱトラブル対処とかしてるとホント勉強になります。自宅サーバーだから、金銭の発生するようなサービスが動いているわけでもないし、責任感ってのもないんで気楽にできますからね。僕なんか専門的に勉強して来たわけじゃないから、一つ一つがホントためになる。ディストリビューションによって違いは出てくるんですけど、ノウハウとして自分に蓄積出来れば何かの時に役に立つんじゃないかなぁって思いますね。
あと今回知ったことは、 zsh って yum も補完出来るようになっているんですけど、補完出来るのって Var 3.2 からなんですね。今サーバーで使っているのって 2.6 で、この中には補完関数入っていませんでした。yum の Developer 版をダウンロードすればいいんですけど、 Developer 版はすでに Fedora7 の test 版に入っちゃってるので update に躊躇するんですよね。