Subversion と Trac のインストール方法とハマりポイントのまとめ
とりあえず、Subversion と Trac のインストールに必要なソフトウェアは以下です。今回インストールしたバージョンも記しておきます。
ちなみに今回インストールしたサーバはFreeBSD 6.1で、Perl、Python、Ruby はインストール済。でも Trac は Python だけあれば動きますので、Perl と Ruby はインストールされてなくてもよいです。
- Subversion関連 neon-0.25.5.tar.gz
- Trac関連 httpd-2.0.59.tar.gz
swig-1.3.31.tar.gz
subversion-1.4.2.tar.gz
sqlite-3.3.10.tar.gz
pysqlite-2.3.3.tar.gz
clearsilver-0.10.3.tar.gz
trac-0.10.3.tar.gz
apache2
% ./configure --with-mpm=prefork --prefix=/usr/local/apache2 --enable-modules=most --enable-proxy --enable-rewrite % make % sudo make installneon
% ./configure % make % sudo make installswig
% ./configure --with-python=/usr/local/bin/python --with-perl5=/usr/local/bin/perl --with-ruby=/usr/local/bin/ruby % make % sudo make installsubversion
% ./configure --with-apxs=/usr/local/apache2/bin/apxsここでMakefileを編集。
なぜなら、このまま make をすると Trac を使用する際に 「/usr/local/lib/libsvn_ra_dav-1.so.0: Undefined symbol "gss_delete_sec_context"」や「Undefined symbol "xmlCreatePushParserCtxt"」というエラーが出るからで、それは libgssapi や libxml2 をリンクするための記述が Makefile にないかららしい。そこで Makefile で以下のような変更を加える。
SVN_APR_LIBS = /usr/local/apache2/2.0.59/lib/libapr-0.la -lm -lcrypt↓
SVN_APR_LIBS = /usr/local/apache2/2.0.59/lib/libapr-0.la -lm -lcrypt -lgssapi `krb5-config --libs` `xml2-config --libs`と
SVN_APR_INCLUDES = -I/usr/local/apache2/2.0.59/include↓
SVN_APR_INCLUDES = -I/usr/local/apache2/2.0.59/include `krb5-config --cflags` `xml2-config --cflags`その後
% make % sudo make installあと、Pythonバインディングのライブラリもインストールします。
% make swig-py % sudo make install-swig-pyで、ここでインストールしたものは、/usr/local/lib/svn-python というディレクトリにインストールされるのでこれを Python から見えるようにしなければなりません。そこで Python のライブラリが置いてある /usr/local/lib/python2.4/site-packages に subversion.pth というファイルを作って、中に以下のように記述しておく必要があります。
/usr/local/lib/svn-pythonこうすることで、Python で svn などのライブラリを使用できるようになります。
sqlite
% ./configure % make % sudo make isntallpysqlite
% sudo ./setup.py installclearsilver
% ./configure --with-apache=/usr/local/apache2 --disable-ruby % make % sudo make installtrac
% sudo ./setup.py installここまでインストールしたら、apache2 の conf (/usr/local/apache2/conf/httpd.conf) に以下のように LoadModule を記述。
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so LoadModule python_module modules/mod_python.soまた、http://trac.example.com/ で見られるように以下のように VH を切る。
<VirtualHost *:80> ServerName trac.example.com DocumentRoot /path/to/trac/project <Location /> SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnv /path/to/trac/project PythonOption TracUriRoot / </Location> <Location "/login"> AuthType Basic AuthName "Trac" AuthUserFile /path/to/trac/project/.htpasswd Require valid-user </Location> </VirtualHost>あとは以下のように普通に Trac のプロジェクトを作ってやればよい。
trac-admin /path/to/trac/project initenvちなみに、今回は旧サーバからの移行だったので initenv などはせず元の Trac のデータをコピーただけです。ただ、今回の移行で Trac のバージョンを 0.9.6 から 0.10.3 に上げたので、その場合には db のスキーマなどが変っているっぽく upgrade のための処理が必要でした。まぁ、Trac にアクセスすると upgrade しろってエラーが出るのでそのエラー通りに
% trac-admin /path/to/trac/project upgradeとやるだけです。あと今回 sqlite のバージョン2で作られたデータベースをバージョン3に移行するということもやったのですが、その時には以下のようにするとサクっとできるようです。
% sqlite dbfile .dump | sqlite3 newdbfileとりあえず、今回はこんな感じで Trac を移行できました。
ちなみに、subversion のデータの移行は、以下のようにすればサクっといけます。
旧サーバ
まず今のリポジトリをダンプ。
% svnadmin dump /path/to/svn/repos > repos.dumpダンプしたものを新サーバへもっていく。
新サーバ
まずリポジトリを作成して、旧サーバからもってきたダンプを流し込むだけ。
% svnadmin create /path/to/svn/repos % svnadmin load /path/to/svn/repos < repos.dumpこんな感じでサクっといけるはず。
ということで Subversion と Trac の移行をまとめてみました。
Trac がなかなか動かなくて苦労したのですが、ソフトウェア同士の相性とかもあるのでもし動かないなぁと思ったらバージョンを下げてみるのも手かも。