さくらのOSバージョンアップでTracが動かなくなっていた

オチなし危険!!
最近順次OSをFreeBSD 7.1に置き換えているようで、各所で問題が起きている様子。恐ろしいなあ。
と思っていたら自分のところにも災禍が。Tracにアクセスしてもまったくレスポンスが返ってこない。同サーバ内で動かしている別のCGIは動作していたので、ネットワーク周りに問題があるわけではなさそう(余談ながら、この問題のためTracにアクセスを繰り返していたところ「CPU時間食いすぎ!」とさくらからCGIの実行制限をかけられてしまって、そのことが問題の切り分けを難しくしていた)。

問題の解明

レスポンス返ってこないのでは何ともし難いので、とりあえずシェルからtrac.cgiを実行してみることに。確かTracPython製だった気がするのでpythonで動かすと、

$ python trac.cgi
  File "trac.cgi", line 2
    LD_LIBRARY_PATH=/home/USER/local/lib;export LD_LIBRARY_PATH
                    ^
SyntaxError: invalid syntax

げ、そんな根本的なことかよ、というか何で今までそれで動いてたの?と思ったら、さくらでTracを動かすに当ってtrac.cgiシェルスクリプトとして作成していたことを思い出す。中を覗いてみると、

$ less trac.cgi
#!/bin/sh
LD_LIBRARY_PATH=/home/USER/local/lib;export LD_LIBRARY_PATH
TRAC_ENV=/home/USER/var/trac/repo;export TRAC_ENV
PYTHONPATH=/home/USER/local/lib/python:/home/USER/local/lib/python/site-packages;export PYTHONPATH
/usr/local/bin/python /home/USER/www/trac/trac_.cgi

だったので、shで動かす。

$ sh ~/www/trac/trac.cgi
/home/USER/local/lib/python/site-packages/pysqlite2/dbapi2.py:27: RuntimeWarning: Python C API version mismatch for module pysqlite2._sqlite: This Python has API version 1013, module pysqlite2._sqlite has version 1012.
  from pysqlite2._sqlite import *
pthread_cond_wait: Unknown error: 0

とのこと。調べてみると、

OSバージョンアップによる主な変更点:
(略)
Python Python 2.4.5 → 2.5.2
http://www.python.org/download/releases/2.5.2/NEWS.txt

ページが見つかりません|さくらインターネット公式サポートサイト

というわけなので、まあそういうことなのでしょう;)

(12:14追記)pysqlite2.5.5入れてみてもダメだった

Pythonとpysqliteのバージョンがあってないのかなーと考え、とりあえず最新版らしい2.5.5を入れてみる。次のサイトを参考にしてみた。
錯綜するさくらインターネットでのpysqliteインストール - 常山日記

$ python setup.py clean
$ python setup.py build
$ python setup.py install --home=$HOME/local

そしたらセグフォするようになった\(^0^)/

(28日 16:00追記)symlink python->python2.4をpython->python2.5に変更してセグフォしなくなる

  • id:hktechnoたんに相談してみた。
  • ~/local/lib/pythonから~/local/lib/python2.4へのシンボリックリンクがあったのでこれを削除
  • 改めてpython2.5に向けて張る。
  • shで実行してみる。

まとめると以下のとおり。

$ cd ~/local/lib
$ rm python
$ ln -s python2.5 python
$ sh ~/www/trac/trac.cgi
No module named trac.web
Traceback (most recent call last):
  File "/home/emp-cyas/www/trac/trac_.cgi", line 19, in <module>
    from trac.web import cgi_frontend
ImportError: No module named trac.web
Status: 500 Internal Server Error
Content-Type: text/plain

Oops...

Trac detected an internal error: No module named trac.web

Traceback (most recent call last):
  File "/home/emp-cyas/www/trac/trac_.cgi", line 19, in <module>
    from trac.web import cgi_frontend
ImportError: No module named trac.web

セグフォしなくなった!ちゃんとエラーメッセ−ジを返してくれるようになったので対処しようがある。
id:hktechnoたんありがとう!!!!!!!!!!!!

(28日 22:17追記)諦めました

どう考えても再インストールしたほうが早いと判断して修復を諦めました\(^0^)/
次回は確実に動作報告のあるバージョンの組み合わせでインストールしようと思います。というかそういう情報をまとめたサイトってないのかなー。今は色んな人の部ログから断片的な情報を集めることしかできない。