MacPortsでTrac 1.0にバージョンアップ

Snow LeopardTracMacPortsを使ってバージョンアップしてみた。

環境

バージョンアップ

とりあえず、MacPortsを2.1.2にバージョンアップして(sudo port selfupdateではうまくいかなかったので、インストーラから入れ直したけど)パッケージを更新。

sudo port upgrade outdated

インストールされたパッケージを見てみる。

apache2 @2.2.22_2+preforkmpm
subversion-python27bindings @1.7.7_0
trac @1.0_0+python27+subversion

Tracにアクセスしてみると...エラーが出て動かなくなってる。

File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mod_python/importer.py", line 1537, in HandlerDispatch\n default=default_handler, arg=req, silent=hlist.silent)
[error] File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mod_python/importer.py", line 1202, in _process_target\n module = import_module(module_name, path=path)
[error] File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mod_python/importer.py", line 304, in import_module\n return __import__(module_name, {}, {}, ['*'])
[error] ImportError: No module named trac.web.modpython_frontend

mod_pythonで問題がありそうなので、本家サイトの情報を確認してみると、mod_pythonはメンテナンスされていないとのこと。仕方ないので、FastCGIで動かすことにする。(後で考えるとPYTHONPATHの問題だったと思う)

FastCGIで動かす

mod_fastcgiをインストール。

sudo port install mod_fastcgi

TracFastCgi – MIST Projectの情報を見て設定。
途中、次のようなエラーが出たので、PYTHONPATHを設定する。

Oops…
Trac detected an internal error:
No module named trac.web
Traceback (most recent call last):
  File "/opt/local/share/trac/contrib/cgi-bin/trac.fcgi", line 19, in <module>
    from trac.web import fcgi_frontend
ImportError: No module named trac.web

これでうまくいったかと思ったら、リポジトリブラウザが表示されない。
エラーの内容をみると、Pythonのバージョンが合っていないようなので、FastCGIPython 2.7を使うように設定。

import_svn
    from svn import fs, repos, core, delta
  File "/opt/local/lib/svn-python2.7/svn/fs.py", line 26, in <module>
    from libsvn.fs import *
  File "/opt/local/lib/svn-python2.7/libsvn/fs.py", line 26, in <module>
  File "/opt/local/lib/svn-python2.7/libsvn/fs.py", line 22, in swig_import_helper
ImportError: dlopen(/opt/local/lib/svn-python2.7/libsvn/_fs.so, 2): Symbol _import_svn()
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tracopt/versioncontrol/svn/svn_fs.py", line 72, in _import_svn
    from svn import fs, repos, core, delta
  File "/opt/local/lib/svn-python2.7/svn/fs.py", line 26, in <module>
    from libsvn.fs import *
  File "/opt/local/lib/svn-python2.7/libsvn/fs.py", line 26, in <module>
    _fs = swig_import_helper()
  File "/opt/local/lib/svn-python2.7/libsvn/fs.py", line 22, in swig_import_helper
    _mod = imp.load_module('_fs', fp, pathname, description)
ImportError: dlopen(/opt/local/lib/svn-python2.7/libsvn/_fs.so, 2): Symbol not found: _PyCapsule_Import
  Referenced from: /opt/local/lib/libsvn_swig_py27-1.0.dylib
  Expected in: flat namespace
 in /opt/local/lib/libsvn_swig_py27-1.0.dylib

設定内容

httpd.conf の設定

<IfModule mod_fastcgi.c>
  AddHandler fastcgi-script .fcgi
</IfModule>
LoadModule fastcgi_module modules/mod_fastcgi.so
ScriptAlias /trac /opt/local/share/trac/contrib/cgi-bin/trac.fcgi
SetEnv TRAC_ENV_PARENT_DIR /Trac
SetEnv PYTHONPATH /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
<Directory "/opt/local/share/trac/contrib/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

trac.fcgi の設定

#!/opt/local/bin/python2.7
# (以下省略)

Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド

Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド