«前の日記(2006-05-25 (木)) 最新 次の日記(2006-06-03 (土))»  

まちゅダイアリー


2006-05-27 (土)

さくらインターネットで Subversion + Trac

このサーバで Trac を使えるようにしようと思い、 「さくらインターネットにTracを構築する」を参考にセットアップしている。 手順が分かりやすく書かれているので、特に迷うところは無かった。

でも、 trac-admin を実行してリポジトリをインポートするときに、こんなエラーが出る。

$ trac-admin /home/machu/var/trac/tdiary_plugin initenv
Creating a new Trac environment at /home/machu/var/trac/tdiary_plugin
Project Name [My Project]> tDiary plugins
Database connection string [sqlite:db/trac.db]>
Path to repository [/var/svn/test]> /home/machu/svn/tdiary_plugin
Templates directory [/home/machu/share/trac/templates]>

Creating and Initializing Project
 (中略)
Indexing repository
Failed to initialize environment. No module named thread
Traceback (most recent call last):
  File "/home/machu/lib/python2.4/site-packages/trac/scripts/admin.py", line 616, in do_initenv
    repos = self.__env.get_repository()
  File "/home/machu/lib/python2.4/site-packages/trac/env.py", line 155, in get_repository
    from trac.versioncontrol.svn_fs import SubversionRepository
  File "/home/machu/lib/python2.4/site-packages/trac/versioncontrol/svn_fs.py", line 25, in ?
    from svn import fs, repos, core, delta
  File "/home/machu/lib/svn-python/svn/fs.py", line 19, in ?
    from libsvn.fs import *
  File "/home/machu/lib/svn-python/libsvn/fs.py", line 29, in ?
    import core
  File "/home/machu/lib/svn-python/libsvn/core.py", line 2903, in ?
    import threading
  File "/usr/local/lib/python2.4/threading.py", line 6, in ?
    import thread
ImportError: No module named thread

さくらでは Thread モジュールが入っていないことが原因みたい。 何で、元の例では動いているんだろう。 最新のサーバ (www700番台) と古いサーバ (www200番台) で設定が違うのかな。

仕方が無いので、dummy_threading を使う方法を参考に、 lib/svn-python/libsvn/core.py を以下のように書き換えたら動いた。 これで本当に大丈夫かどうか良く分かんないけど。

@@ -2900,7 +2900,10 @@
         _swig_setattr(self, apr_hash_t,self.__class__,apr_hash_t)
 _core.apr_hash_t_swigregister(apr_hash_tPtr)

-import threading
+try:
+   import threading
+except ImportError:
+   import dummy_threading as threading

 application_pool = None
 application_pool_lock = threading.Lock()
本日のツッコミ(全2件) [ツッコミを入れる]
weekbuild (2006-05-28 (日) 17:04)

試したらwww700番台でもimport threadingできませんでした。<br>swigのバージョンが違ったりするのかな?メモメモ。。

まちゅ (2006-05-28 (日) 21:49)

swig, sqlite, pysqlite は同じバージョンです。<br>Subversionが1.3.1なので、それが原因かもしれません。<br>解説ページ参考になりました。ありがとうございますー。