さくらインターネットの共用サーバでの Trac 構築に苦戦中

さくらインターネットの共用サーバ上に、Trac の環境を構築しようとしています。vim 入れたりscreen 入れたりシェルを変更したりしているのは、すべてこのための作業です。会社の人にそんな話をしたら「えーっ、そんなの入れても良いの?!」とか言われました。確かにリポジトリのサイズがどこまで膨らむのかとか、負荷がどうなのかとか不安ではありますが、とにかく構築中です。とりあえずやってみようと。

結論から言うと、どうにもうまく動いてくれません(→動きました)。というより、ある程度制限のある状態でないと動かせない、というのが正解なのかもしれません。

以下、あらましなどざっくりと。

MT4i を開発している中で、非常に面倒に感じていたのがソースの二重管理です。現在 3.0 を開発中ですが、もたもたやっているうちに 2.x もバージョンアップする必要が出てきちゃったりなんかして、非常に面倒なことになっています。

そこで、前々からバージョン管理にSubversion を使いたいと思っていました。まー、MT4i ごときに大げさかもしれませんが、便利なものは便利ですからねぇ。しかし、Subversion を動かすには専用サーバが必要だと思っていました。共用サーバには、勝手にアプリケーションをインストールできないと思っていましたから。

で、専用サーバでも良いから、さくらインターネットで Subversion をインストールした事例とかあるかなと、探してみたんです。具体的には「さくらインターネット subversion」で検索してみました。すると、どうやら共用サーバ上にも Subversion がインストール可能らしい。更に Trac を構築した事例まで。

というわけで、とにかくやってみることにしました。Subversion 入れて、Trac を動かすのです。vim やら screen やらインストールして感触を掴むと、あちこち検索して情報を得ながらアプリケーションを色々とインストール。

しかしやってる最中で、重要なことに気付きます。どうやら Subversion を構築しても、匿名でのチェックアウトは不可能な模様。Trac のチケットを公開してユーザーとロードマップを共有し、リポジトリを公開して開発途上のバージョンをチェックアウトして使ってもらうつもりだったのに、これでは中途半端です。

で思いついたのが、Google Code のリポジトリとの Sync。まだ試していませんが、どうやら可能らしい(今気付いたけど、これできなかったらショックだなぁ)。開発は自分のところでやって、リポジトリを Google Code に Sync。ユーザにはそちらからチェックアウトしてもらえればいいかなと。

何か勝手に盛り上がってまいりました。

色々と試行錯誤しつつ、インストールしたのは以下のものたちです。

Subversion 関連

  • swig-1.3.29
  • apr-0.9.13
  • apr-util-0.9.13
  • neon-0.25.5
  • subversion-1.4.3

Trac 関連

  • sqlite-3.3.13
  • pysqlite-1.1.8
  • clearsilver-0.9.14
  • docutils-0.4
  • trac-0.10.3-ja-1
  • setuptools(ez_setup.py)
  • TracWebAdmin-0.1.2
  • TracAccountManager-0.1.3

しかし現在、「Undefined symbol "SSL_load_error_strings"」というエラーに悩まされています。Trac にアクセスすると

Oops…
Trac detected an internal error:

If you think this really should work and you can reproduce it, you should consider reporting this problem to the Trac team.

Go to http://trac.edgewall.org/ and create a new ticket where you describe the problem, how to reproduce it. Don't forget to include the Python traceback found below.

TracGuide — The Trac User and Administration Guide
Python Traceback

Traceback (most recent call last):
File "/home/XXX/local/lib/python2.4/site-packages/trac/web/main.py", line 387, in dispatch_request
dispatcher.dispatch(req)
File "/home/XXX/local/lib/python2.4/site-packages/trac/web/main.py", line 191, in dispatch
chosen_handler = self._pre_process_request(req, chosen_handler)
File "/home/XXX/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 "/home/XXX/local/lib/python2.4/site-packages/trac/versioncontrol/api.py", line 73, in pre_process_request
self.get_repository(req.authname) # triggers a sync if applicable
File "/home/XXX/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"

といったエラーが表示され、

$ python -c "import svn.repos"

というコマンドを実行すると、

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

というエラーが表示される状態です。Subversion を 1.3.x に下げればいけるという情報も見かけましたが、それでは svnsync が使えず、Google Code と Sync できないのでアウトです。

はてさてどうしたものか。先週一週間、寝る間も惜しんで弄繰り回していたのに、「結局動きません」で終わりなのかな…。


<参考にしたところ(忘れてるとこ思い出したら後で追加)>


<2月28日追記>
とか何とか言いながら引き続き弄繰り回していたら

動いた!

参考になったのは以下。

ポイントは、「compile neon separately and install.」で「add "--enable-shared" to the ./configure line.」です。構築手順はまた別のエントリでまとめますー。