Pythonをバージョンアップしたらmailmanが動かなくなった

またタイトルが長いな。
mailmanが動作しているマシンでPythonをバージョンアップしました。python2.4.1からpython2.4.4へ。マイナーアップだし、mailmanのページにもPython2.4は大丈夫だよってなことがかいてあるのであまり深く考えないでPythonをmake,make install。しばらくして、mailmanで運用しているMLにメールを投げるとエラーで帰ってくるとのクレームが入りました。syslogを見てみるとこんなエラー。

Feb 21 15:00:04 mail sendmail[27435]: [ID 801593 mail.info] l1L604dG0XXXXX: to="
|/usr/local/mailman/mail/mailman post mailman", ctladdr=<mailman@mail.hoge.com> (1/0), delay=00:00:00, xdelay=00:00:00, mailer=prog, pri=30830, dsn=5.3.0, stat=unknown mailer error 137
Feb 21 15:00:04 mail sendmail[27435]: [ID 801593 mail.info] l1L604dG0XXXXX: l1L604dG0XXXXX: DSN: unknown mailer error 137

うーん。なんだか/usr/local/mailman/mail/mailmanコマンドが異常終了している模様。mailmanのコマンド一式はmailmanユーザで動作しているので手動で試してみます。

$ su - mailman
$ /usr/local/mailman/mail/mailman hogehoge
ld.so.1: /usr/local/bin/python: fatal: libstdc++.so.6: open failed: No such file or directory
$

ほう。共有ライブラリが見えないかといってる。/var/mail/rootにもエラーメールがきていました。

The original message was received at Wed, 21 Feb 2007 15:00:27 +0900 (JST)
from localhost
with id l1L60RdG0XXXXX

   ----- The following addresses had permanent fatal errors -----
"|/usr/local/mailman/mail/mailman bounces hogehoge"
    (reason: 137)
    (expanded from: <hogehoge-bounces@mail.hoge.com>)

   ----- Transcript of session follows -----
ld.so.1: /usr/local/bin/python: fatal: libstdc++.so.6: open failed: No such file or directory
Killed
554 5.3.0 unknown mailer error 137

/usr/local/libが見えて無いんだな。えーと、Linuxでldconfigに相当するコマンドってなんだっけ。。。。思い出せないので、/usr/libにリンクを張ることにします。

# cd /usr/lib
# ln -s /usr/local/lib/libstdc++.so.6.0.8 ./libstdc++.so.6
ln: ./libstdc++.so.6 を作成できません: ファイルが存在します。

む、すでにある?

# ls -l  /usr/lib/libstdc++.so.6
lrwxrwxrwx   2 root     other         18 11月 19日 2004年 libstdc++.so.6 -> libstdc++.so.6.0.2
# ls -l /usr/local/lib/libstdc++.so.6
lrwxrwxrwx   1 root     other         18  9月  7日  20:00 libstdc++.so.6 -> libstdc++.so.6.0.8

/usr/libのものは古いみたいです。削除して/usr/local/libからシンボリックリンク

# rm /usr/lib/libstdc++.so.6
# ln -s /usr/local/lib/libstdc++.so.6.0.8 /usr/lib/libstdc++.so.6

これで念のためmailmanを再起動。これでちゃんと動作しました。
いままで使っていたpythonが参照していた共有ライブラリが、gccのバージョンアップですでに古い物になっていたんですね。