はてなと時期を同じくして clouder.jp も自宅サーバからさくらインターネットに移行しまして、Subversion と Trac をインストールしたのですが結構苦労したので覚え書きとして残しておきます。

とりあえず、Subversion と Trac のインストールに必要なソフトウェアは以下です。今回インストールしたバージョンも記しておきます。
ちなみに今回インストールしたサーバはFreeBSD 6.1で、Perl、Python、Ruby はインストール済。でも Trac は Python だけあれば動きますので、Perl と Ruby はインストールされてなくてもよいです。
  • Subversion関連
  • neon-0.25.5.tar.gz
    swig-1.3.31.tar.gz
    subversion-1.4.2.tar.gz

  • Trac関連
  • httpd-2.0.59.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 install
neon
% ./configure
% make
% sudo make install
swig
% ./configure --with-python=/usr/local/bin/python --with-perl5=/usr/local/bin/perl --with-ruby=/usr/local/bin/ruby
% make
% sudo make install
subversion
% ./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 isntall
pysqlite
% sudo ./setup.py install
clearsilver
% ./configure --with-apache=/usr/local/apache2 --disable-ruby
% make
% sudo make install
trac
% 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 がなかなか動かなくて苦労したのですが、ソフトウェア同士の相性とかもあるのでもし動かないなぁと思ったらバージョンを下げてみるのも手かも。