pkgdbの崩壊
rubyとかportupgradeしてたら、
[hoge.example:/usr/ports/sysutils/portupgrade]sudo pkgdb -u ---> Updating the pkgdb [Updating the pkgdb <format:bdb_btree> in /var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument; rebuild needed] [Rebuilding the pkgdb <format:bdb_btree> in /var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument: Cannot update the pkgdb!]: Cannot update the pkgdb!]
というエラーを出して、pkgdb -uができなくなった。
ぐぐって分かったことは、単純に/var/db/pkg/pkgdb.db を消してsudo pkgdb -F を実行する。
これでpkgdb.dbが再構築されて無問題。
と思ったら
[hoge.example:/usr/ports/sysutils/portupgrade]portversion undefined method `each' for nil:NilClass /usr/local/sbin/portversion:239: [BUG] Segmentation fault ruby 1.8.4 (2005-12-24) [i386-freebsd6] zsh: abort portversion
とかでて落ちる。だめじゃん。
portupgrade-develとかいれてもだめ。
でruby -d で良く見ると
/usr/local/lib/ruby/site_ruby/1.8/pkgdb.rb
でこけてるので、
--- /usr/local/lib/ruby/site_ruby/1.8/pkgdb.rb Tue Jul 18 18:04:20 2006 +++ /home/hoge/pkgdb.rb.orig Tue Jul 18 18:04:15 2006 @@ -686,7 +686,7 @@ def close_db if @db unlock_db - @db.close +# @db.close @db = nil end end
してみたら直った。でも、こんな適当でいいのかな。dbちゃんとクローズできてないんじゃ。。。