TracをXreaに入れる (3) Subversionと連携

 連携と行ってもたいしたことはありませんね。まず、連携するためにリポジトリを作成します。ふつうSubversionを使うときはレポジトリは単一でプロジェクトを分ける、ということをするようですが、tracを使う場合、リポジトリひとつにつき、プロジェクトひとつになるようなので、分ける必要がありそうですね。

 FSFSでいいのでデフォルトで作ります。

mkdir -p  $HOME/data/svn/trac_sample
svnadmin create $HOME/data/svn/trac_sample

 作成したので、$HOME//data/trac/sample/conf/trac.iniにリポジトリの場所を追加

repository_dir = /virtual/gakusi/data/svn/trac_sample

 で、tracアクセスしてみたが、エラーになってしまう。

Traceback (most recent call last):
  File "/virtual/gakusi/local/lib/python2.4/site-packages/trac/web/main.py", line 406, in dispatch_request
    dispatcher.dispatch(req)
  File "/virtual/gakusi/local/lib/python2.4/site-packages/trac/web/main.py", line 191, in dispatch
    chosen_handler = self._pre_process_request(req, chosen_handler)
  File "/virtual/gakusi/local/lib/python2.4/site-packages/trac/web/main.py", line 263, in _pre_process_request
    chosen_handler = f.pre_process_request(req, chosen_handler)
  File "/virtual/gakusi/local/lib/python2.4/site-packages/trac/versioncontrol/api.py", line 73, in pre_process_request
    self.get_repository(req.authname).sync()
  File "/virtual/gakusi/local/lib/python2.4/site-packages/trac/versioncontrol/api.py", line 91, in get_repository
    raise TracError('Unsupported version control system "%s". '
TracError: Unsupported version control system "svn". Check that the Python bindings for "svn" are correctly installed.

このエラー、xreaにはsvnがデフォルトでも入ってしまっているせい(でもPythonバインディングがないのでインストールは必要)なのかなと思ったのだけど、調べてみると違うようですね。試しに、

python -c "import svn.repos"

を流すとこれ自体が動かない。これが既に問題。チェックしておくべきでした。エラーはこんなの。

Traceback (most recent call last):
  File "<string>", line 1, in ?
  File "/virtual/gakusi/local/lib/svn-python/svn/repos.py", line 19, in ?
    from libsvn.repos import *
  File "/virtual/gakusi/local/lib/svn-python/libsvn/repos.py", line 5, in ?
    import _repos
ImportError: /virtual/gakusi/local/lib/libsvn_ra_dav-1.so.0: undefined symbol: SSL_load_error_strings
python -c "import svn.repos"

 こんなことを書いているブログを見つけた。

Subversion ディレクトリ以下に置いて Subversion と一緒にインストールすることができるけれど、そうすると「ImportError: /path/to/libsvn_ra_dav-1.so.0: Undefined symbol "SSL_load_error_strings"」などと言われるので --enable-shared も指定を指定して別個インストール。Subversion で --with-neon= を指定。

http://www.hazama.nu/t2o2/archives/002700.html:

この方と同じようにNeonがうまく入ってないんじゃないかという気がしてきました(でもmakeのときにちゃんとできたよみたいなメッセージ出たのにね)。例によってSubversionのINSTALLログを見てみるとバージョンが0.26系でもOKのようなのでそっちにしてみます。(最新は0.28)。

cd $HOME/local/src
wget http://www.webdav.org/neon/neon-0.26.4.tar.gz
tar xvzf neon-0.26.4.tar.gz
cd neon-0.26.4
./configure  --prefix=$HOME/local --with-ssl --with-libs=/usr/local --enable-shared
make clean && make && make install

 入った。ではSubversionをいれなおす。始めにインストールしたときのneonディレクトリは消しておきます。configureにに--with-neon=$HOME/local/をつけます。

 で、直ったかな……って、なおってないし!! どうすればいいんだ。

 どうも、--with-neon=$HOME/local/がいけないんじゃないか。--with-neon=$HOME/local/include(なんでこんなパスに?)にして、ついでにもういいや、depsでインストールし直すことにしました。

 行ったー。たんに自分があほだったから難しくなったのではないかという気がしてきた。結局下記とおりでいいらしい。

  1. neonは自分でmakeする
  2. それ以外はsubversion-depsを展開すればsubversionの下に配置してくれるのでそれでよい
  3. neonがインストールされた場所をちゃんと指定する(--with-neon=$HOME/local/include/)
  4. オプションの--with-libs=$HOME/localも密かに重要($HOME/local が usr/localとかになってないか確認)

という感じですかね。

cd $HOME/local/src
wget http://subversion.tigris.org/downloads/subversion-1.4.6.tar.gz 
tar xzvf subversion-1.4.6.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.4.6.tar.gz 
tar xzvf subversion-deps-1.4.6.tar.gz
cd $HOME/local/src/subversion-1.4.6
./configure --prefix=$HOME/local --without-berkeley-db --with-python=$HOME/local/lib/python --enable-swig-bindings=python --with-swig=$HOME/local/bin/swig --with-ssl --disable-static --with-libs=$HOME/local --with-neon=$HOME/local/include/
make clean && make && make install
make clean-swig-py && make swig-py
make install-swig-py