さとうふみやす @ OSS テクノロジです。 At Fri, 11 Apr 2008 22:44:16 +0900, S_Konno(今野 滋) wrote: > CGIを別の新しいサーバー機に引っ越したら、DBMがデータを読まなくなってしまいました。 ***snip*** > $ ruby test.rb > test.rb:3:in `initialize': Inappropriate file type or format - hoge (Errno::E079) Berkeley DB (BDB) のバージョンが異なるのでは? > $ ruby -v > ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-freebsd7] 移行元と移行先で $ ldd /PATH/TO/lib/ruby/1.8/ARCH/dbm.so |grep db の実行結果を比べてみるとどうでしょう? 例えば、手元の CentOS 4 (i386版) の Ruby だと: $ ldd /usr/lib/ruby/1.8/i386-linux-gnu/dbm.so |grep db libdb-4.2.so => /lib/tls/i686/libdb-4.2.so (0x005cb000) > 古いデータ形式を新しいデータ形式に変換する何か良い方法はありますでしょうか? 移行元の環境で db_dump でダンプして、 移行先の環境で db_load でロードする。 ちなみに Debian だとコマンド名は db<BDBメジャーバージョン>.<BDBマイナーバージョン>_dump だったりしますが。(それに Debian の Ruby の DBM (libdbm-ruby1.x) は BDB じゃなくて GDBM とリンクしているんですけどね) -- -- Name: SATOH Fumiyasu (fumiyas @ osstech co jp) -- Business Home: http://www.OSSTech.co.jp/ -- Personal Home: http://www.SFO.jp/blog/