[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:45610] Re: spamassassin や sa-learn のエラー



水原です。

松田さん、ありがとうございます。
また村上さん、かわべさんからも有益な助言をいただきました。感謝します。

At Thu, 12 Jan 2006 23:44:24 +0900,
MATSUDA Yoh-ichi / 松田陽一 wrote:
> 
> 思い出した。
> 
>     リンク名 [debian-users:37315] Re: spamassassinと perlのバージョン問題
>         URL: http://lists.debian.or.jp/debian-users/200306/msg00088.html

すでに二年前に同じ問題に遭遇されていたのですね。
(それだけ長い間、私が古いバージョンの spamassassin を使いつづけていた
ということか…。Debian のリリースサイクルがそれだけ長いっていうことで
もありますね。)

> upgrade 後、 sa-learn -D --sync しても、ですか?

はい。すみません、debug メッセージには有益な情報がなかったので引用しま
せんでした。

> > perl のバージョンがあがると DB のファイルフォーマットがかわるので読め
> > なくなるといわれても困るのですが…。libdb4.0-util とか db4.0-doc なん
> > て package 存在しないし…。spamassassin-3.1.0 にはこの種の記述はないよ
> > うです。
> 
> んー、ぐぐっても見つかりませんね。
> 手元にある奴を上げましたんで、良かったら試してみて下さい。
> 
> http://www.flcl.org/~yoh/junk/libdb4.0-util_4.0.14-2_i386.deb

ありがとうございます。結局、libdb4.2-util という類似の package 入れて
試してみたところ、直後には

grand:~> sa-learn --sync
bayes: bayes db version 2 is not able to be used, aborting! at /usr/share/perl5/Mail/SpamAssassin/BayesStore/DBM.pm line 195.

というメッセージが表示され、やはりだめか?と思ったのですが、その後は
sa-learn も spamassassin もエラーなしで実行できるようになりました。

ちなみに file コマンドで調べてみると、

使用前:

grand:~> file .spamassassin.bak/*
.spamassassin.bak/auto-whitelist:       Berkeley DB (Hash, version 8, native byte-order)
.spamassassin.bak/auto-whitelist.dir:   GNU dbm 1.x or ndbm database, little endian
.spamassassin.bak/auto-whitelist.mutex: ASCII text
.spamassassin.bak/auto-whitelist.pag:   GNU dbm 1.x or ndbm database, little endian
.spamassassin.bak/bayes.mutex:          ASCII text
.spamassassin.bak/bayes_seen:           Berkeley DB (Hash, version 5, native byte-order)
.spamassassin.bak/bayes_toks:           Berkeley DB (Hash, version 5, native byte-order)
.spamassassin.bak/old_bayes_seen:       Berkeley DB (Hash, version 5, native byte-order)
.spamassassin.bak/old_bayes_toks:       Berkeley DB (Hash, version 5, native byte-order)
.spamassassin.bak/user_prefs:           ASCII English text
.spamassassin.bak/user_prefs.org:       ASCII English text

使用後:

grand:~> file .spamassassin/*
.spamassassin/auto-whitelist:       Berkeley DB (Hash, version 8, native byte-order)
.spamassassin/auto-whitelist.dir:   GNU dbm 1.x or ndbm database, little endian
.spamassassin/auto-whitelist.mutex: ASCII text
.spamassassin/auto-whitelist.pag:   GNU dbm 1.x or ndbm database, little endian
.spamassassin/bayes.mutex:          ASCII text
.spamassassin/bayes_journal:        ASCII text
.spamassassin/bayes_seen:           Berkeley DB (Hash, version 7, native byte-order)
.spamassassin/bayes_toks:           Berkeley DB (Hash, version 8, native byte-order)
.spamassassin/old_bayes_seen:       Berkeley DB (Hash, version 5, native byte-order)
.spamassassin/old_bayes_toks:       Berkeley DB (Hash, version 5, native byte-order)
.spamassassin/user_prefs:           ASCII English text
.spamassassin/user_prefs.org:       ASCII English text

という状況なので、確かに DB のバージョンが上っているようです。
(bayes_seen だけ version 7 なのが謎ですが)

というわけで、まとめると以下のようになるようです。
(http://www.wlug.org.nz/SpamAssassinNotes より、thanks to かわべさん)

質問:
woody から sarge への dist-upgrade 後、spamassassin や sa-learn が下記
のようなエラーメッセージを出して失敗するようになってしまいました。
Cannot open bayes databases /home/mizuhara/.spamassassin/bayes_* R/O: tie failed: 

回答:
aptitude install db4.3-util
とした後、bayes DB ファイルのある場所 (普通は ~/.spamassassin) で以下
のコマンドを実行します。
db4.3_upgrade bayes_seen
db4.3_upgrade bayes_toks
その後 sa-learn --sync を実行すると、最初の一回だけ
bayes: bayes db version 2 is not able to be used, aborting! at /usr/share/perl5/Mail/SpamAssassin/BayesStore/DBM.pm line 195.
というメッセージが出ますが、その後の実行ではエラーメッセージも出ずに、
ちゃんと使えるようになるはずです。

ちなみに、 spamassassin は 3.1.0 が出ていますので、testing からとって
きて最新版にすることをお勧めします。

-- 
水原