さくらインターネットの共用サーバ上に、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 TracebackTraceback (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 できないのでアウトです。
はてさてどうしたものか。先週一週間、寝る間も惜しんで弄繰り回していたのに、「結局動きません」で終わりなのかな…。
<参考にしたところ(忘れてるとこ思い出したら後で追加)>
- さくらインターネットにTracを構築する - WeekbuildのHack倉庫 - Trac
- #106 (さくらインターネットにtrac-0.10-ja-1をインストール) - WeekbuildのHack倉庫 - Trac
- 空繰再繰 - Subversionをさくらインターネットにインストール
- Clouder::Blogger: Subversion と Trac のインストール方法とハマりポイントのまとめ(undefined symbol: xmlCreatePushParserCtxt)
- Subversionの最新版(1.4.2)をソースからインストールする-Hello, world!(svn: Unrecognized URL scheme for 〜)
<2月28日追記>
とか何とか言いながら引き続き弄繰り回していたら
動いた!
参考になったのは以下。
ポイントは、「compile neon separately and install.」で「add "--enable-shared" to the ./configure line.」です。構築手順はまた別のエントリでまとめますー。
コメント