Berkeley DB 1.85 -> GNU dbm への変換ツールは?

このQ&Aのポイント
  • Berkeley DB 1.85 (x86 native-endian) ファイル hoge.db -> GNU dbm ファイル hoge.gdb への変換を行うツールはありますでしょうか。
  • 借りていたサーバで動かしていた掲示板に Ruby で書かれた CGI RuBBS を使っていました。
  • RuBBS のデータベース管理ルーチンは変わっていないものの、OpenBSD で動いていた Ruby ランタイムが Berkeley DB 1.85 を使っていたため、Debian Linux 上で動かすと過去記事が読めません。libdb.a のインストールからスタート、は避けたいです。何とかしてツールによる形式の変換で免れたいと願っています。
回答を見る
  • ベストアンサー

Berkeley DB 1.85 -> GNU dbm への変換ツールは?

Berkeley DB 1.85 (x86 native-endian) ファイル hoge.db -> GNU dbm ファイル hoge.gdb への変換を行うツールはありますでしょうか。 借りていたサーバで動かしていた掲示板に Ruby で書かれた CGI RuBBS を使っていま{した,す}。 # 配布元 # http://www.spc.gr.jp/bbs/RuBBS.html # 現在、アーカイブから配布とのこと ハードウェア故障に伴い環境移行しようとしたのですが、RuBBS のデータベース管理ルーチンは変わっていないものの、OpenBSD で動いていた Ruby ランタイムが Berkeley DB 1.85 を使っていた(とりあえず file コマンドはそう告げています)らしく、Debian Linux 上で動かすと過去記事が読めません。 libdb.a のインストールからスタート、は避けたいです。何とかしてツールによる形式の変換で免れたいと願っています。

質問者が選んだベストアンサー

  • ベストアンサー
noname#43437
noname#43437
回答No.1

たぶん、存在しないです。 ぜんぜん難しいものじゃないので、探すより作った方が早いと思います。 #!/usr/bin/perl tie %db_in, 'DB_File' , $dbname_in, O_RDONLY, 0644 or die; tie %db_out, 'GDBM_File', $dbname_out, O_RDWR|O_CREAT, 0644 or die; $db_out{$k} = $v while ($k,$v) = each %db_in ; untie %db_in; untie %db_out; ほら、探すより早い。。 (試してないので、エラー出るかもです)

kmihara
質問者

お礼

回答ありがとうございます。返答が二ヶ月遅れですみません。 結局、解決できずあきらめました。VMware Workstation 4.5.2 上のゲスト OS として SuSE Linux 9.2 をインストールした環境で変換しようとしたものの、最初の tie が die してしまいました。 ファイルが壊れているのか、環境に不備があるのか、解決するためには切り分けが必要ですが、私の技術・資源ではこれ以上の追求ができませんでした。 解決できませんでしたが、ここで締め切ることにします。

kmihara
質問者

補足

返答ありがとうございます。 試してみましたが Berkeley DB を読ませることに失敗しています。 hoge.db がこわれているか、それとも、にわか勉強で分かっていないのですが Berkeley DB は上位互換性はないのでしょうか。 file type に $DB_HASH か $DB_BTREE を指定すると die してしまいます。$DB_RECNO では読めたとはいえませんし(配列に入れると末尾の要素に全データが入っているようです)。 システム環境: Debian Linux テスト版 # 間借サーバなので私の都合で変えられません。ごめんなさい Perl ランタイム: 5.8.4 (apt-get で取得) Ruby ランタイム: 1.8.2 (apt-get で取得) Debian Linux テスト版で apt-get でライブラリを取得すると libdb2, 3, 4.1, 4.2 はありますが libdb.{a,so} は libc5 向けしかないようです。 Berkeley DB 1.85 が現在の Perl, Ruby ランタイムで読めないとなると、まず libdb.{a, so} をインストールして、Perl, Ruby 向けサードパーティモジュールかランタイム全体をビルドし直して、それから変換スクリプトを走らせて、という手順になりそうです。それが嫌です。 使っている Perl, Ruby ランタイムが Berkeley DB のどのバージョンに対応しているのか、そこの確認からスタートのようです。

関連するQ&A

  • dBmとdBμVの変換について

    初歩的な質問で申し訳ありません。 数学が苦手なので皆さんの知識を拝借したいと思っています。 電力比を電圧比に変換する計算方法を教えてください。 たとえば -100dBmはインピーダンス50Ωとした場合何dBμVになるのでしょうか? スペアナで測定したデータをエクセルでグラフを作りたいのですが設定の仕方が悪いのかよくわかりませんが、DATAファイルはUNITをdBμVにしても電力比のデータでしか保存されていません。 画面上の表示、及び画像で保存したデータはきちんと表示されています。 よろしくお願いします。

  • DBの文字コード切り替え

    MySQL 5.6 なのですが・・・・ DBの文字コードはDB作成後にデータを登録した後に、途中で文字コードを変更した場合、DBに登録済みの全角文字はどうなりますか? 文字化けする場合、変換ツールのようなものはあるのでしょうか? また文字コードの変更は ini ファイルを変更してMySQLを再起動するだけでいいのでしょうか?

    • ベストアンサー
    • MySQL
  • リトルエンディアンのデータをテキスト変換して利用したい

    いつもお世話になっています。 ある観測生データが「リトルエンディアン」という形式のバイナリファイルです。 これをテキストに変換して、DBに取り込んで利用したいです。 環境としては、Accessの標準モジュールにその機能を作りたいです。 (Visual Basicなどは持っていないので^^;) やりたいことは、 1)当該のファイルを読み込んで、 2)テキストに変換した後、 3)テキストファイルに書き出して、 4)再度それを固定長の定義に従ってDBに取り込んで、 5)必要なフィールドのみ利用したい、 ということです。 この流れのうち、1)と2)がわかりません。 VBAで上記の1)、2)は可能でしょうか? 可能だとしたら、どのような方法がありますか? 3)以降は、Open やPutなどでテキストファイルを書き出すのと同じでよいでしょうか? なお、秀丸エディタのバイナリモードでファイルを開くと、次のように見えます。(行末に必ず","があります) 91,01,D7,07,02,00,07,04,00,00,A1,62,9F,53,1C,00, 75,00,0F,00,12,00,EA,00,E9,00,80,1F,96,6B,8A,43, 93,B9,92,74,93,E0,8E,73,8A,4A,89,5E,82,51,92,9A, いかがでしょうか?

  • dBmとdB

    dBmをdBに変換することは出来ますか? 出来る場合はやり方も教えてください。

  • どのゾーンデータベースに記述すればいいのでしょうか? (BIND8.1)

    OSはDebian GNU/Linux 3.0です。 BINDは8.1です。 named.confの記述の中に zone"." zone"localhost" zone"127.in-addr.arpa" zone"0.in-addr.arpa" zone"255.in-addr.arpa" というのがあります。 対応するゾーンデータベースのファイル名は順にdb.root、db.local、db.127、db.0、db.255です。 普通は正引き、逆引きの2つでいいと思うのですが どこに記述すればよいのでしょうか? OSとBINDインストール時はローカルIPを割り振りました。設定するときはグローバルに移します。 この場合、ゾーンデータベースのファイル名も変える必要があるのでしょうか?

  • 日本語ファイル名の文字化けについて

    debian 3.1でsambaサーバを運用して複数のwindowsでファイル共有をしています。 何の不自由もなく使用していましたが、debianのコンソール上で共有ディレクトリを見ると 日本語のファイル名が「??-{?.txt」などと表示されるのが気になり、 convmvというツールでファイル名の文字コード変換を行いました。(euc-jpとsjisをutf8へ) ところが変換がうまくいかなかったらしく、コンソール上でもWindows上でも ファイル名が文字化けしてしまいました。 上記のツールで戻すことができなかったためコンソール上でリネームしようとしたのですが、 ファイル名に「-」や「(」が含まれているため失敗してしまいます。 変換に失敗したファイル名を元に戻す方法があればご教授ください。 よろしくお願い致します。

  • データベース(GDBM)を使ったBasic認証

    違うサーバーで正常に稼働していたBasic認証の環境をそのまま別のサーバーで再現したいのですが、うまくいきません。旧環境では、あるWEBページにアクセスするとBasic認証が行われて、正しいIDとパスワードを入れればページを閲覧できます。新環境ではすべてのIDとパスワードが拒否されてしまいます。 旧環境 → RHEL+Apache(バージョン不明ですがかなり古いです) 新環境 → CentOS6.0 + Apache2.3 この認証環境ではユーザー情報のファイルにデータベースを使用しています。 fileコマンドでこのファイルを調べたところ、以下のようになっていました。 .userfiledb.dbm: GNU dbm 1.x or ndbm database, little endian httpd.confの設定は以下のようになっており、新環境でも同じ設定にしてあります。 <Directory /path> AllowOverride AuthConfig Order allow,deny Allow from all AuthType Basic AuthDBMType GDBM AuthName "TEST" AuthDBMUserFile /path/.userfiledb.dbm Require valid-user </Directory> ただし、旧環境では mod_auth_dbm.so がロードされているところ、新環境では mod_authn_dbm.so がロードされています。 新環境でも通常の .htpasswd を使った認証はきちんと動作します。 CGIなどの動作もまったく問題ありません。 初心者なので要領が悪い質問になっていると思いますが、手がかりだけでもつかみたいと思います。補足すべき情報などがありましたらご教示ください。 よろしくお願いします。

  • Accessで97形式のファイルのデータを2000形式に変換してしまった。

    社内でAccess97と2000を共有しているのですが、97のデータを 2000で開いたときに、誤って2000に変換して開いてしまったようです。 97側で開くと Form、******メニューが不正 (*****はフォームの名称) と表示され、開かず 2000からだと問題なく開きます。 以前過去ログにあった http://oshiete1.goo.ne.jp/kotaeru.php3?q=306289 を、参考にしようと思ったのですが、どうやらVBで動作しているらしく >Access2000でmdbを開いている状態で >[ツール]→[データベースユーティリティ]→[データベースの変換]→[Accessの旧バージョンの>データベースに変換]を順に選択して保存するとAccess97で開くことができます。 で、試そうとしたのですが、なぜか[データベースの変換]が表示されません。 開く時も自動で起動し、ツールバーの[ツール]が立ち上げて1秒くらいで消えてしまいます。 どのような設定をされているのか分りませんが、このDBの作成者が辞めてしまい、 Accessを解る人がいない状態です。私もまだ初心者で初級~中級で、実務 レベルではありません。VBが解らないといけないのかも知れないのですが。 他のAccessのDBとも連動(テーブルをリンクしている)しているので、 むやみにデータを取り出して入れ直すことも知識不足で手が出せない状態です。 2000に変換したDBファイルを97に戻す方法。 2000から [データベースの変換]→[Accessの旧バージョンの>データベースに変換]を順に選択して保存する  までを表示させる方法は無いでしょうか? アドバイス宜しくお願いします。

  • dB?dBm?dBi?…?

    電波等について勉強をしているのですがいろいろなdBが出てきて分からなくなってきました。。。 下記の物で分かる方はそれぞれの意味・関連性・計算方法等ご教授ください>< ・dB ・dBm ・dBc ・dBi(アンテナゲイン?) ・dBuV/m(電界強度?) ・dBmeirp(等価等方輻射電力?) 宜しくお願いします。

  • dB dBmの計算

    dB dBmの計算をするさいにlogの前に10や20を付けるのが暗黙になっているようですが、どうしてでしょうか? 10の時と20のとき-10の時もあるのかな?の違いは何でしょうか? 電気初心者です。(機械設計は5年です) 初歩的な質問ですみませんがよろしくお願いします