さくらのレンタルサーバー(スタンダード)でTrac-1.0.ja1+Subversionを使うメモ
もうtrac1.0日本語版がある!
http://www.i-act.co.jp/project/products/products.html
ということで、さっそく使おうとしたら、ひどい目*1に遭ったのでメモ。
文中の$HOMEは、実際の絶対パスに置き換える。
なにはともあれ、作業開始。
主にここを参考にした。
http://attosoft.info/trac/wiki/TracJaInstall
GenshiというTracの依存パッケージが絡むときにUnicodeDecodeErrorが出るかも、ということでデフォルトエンコーディングをutf-8にしておく。
echo $PYTHONPATH echo "import sys; sys.setdefaultencoding('utf-8')" > $HOME/usr/local/lib/python2.7/site-packages/sitecustomize.py
sitecustomize.pyは、.pthファイルみたく、pythonのサーチパスに置いておくと自動で読み込まれて、指定したスクリプトの実行前に走るファイル、らしい。
日本語のために国際化するので、Babelを先にインストール。
BabelがないとTracをインストールするときに国際化ファイルが作れない。
easy_install --prefix=$HOME/usr/local babel easy_install --prefix=$HOME/usr/local http://www.i-act.co.jp/project/products/downloads/Trac-1.0.ja1.zip #依存関係を見てGenshiもインストールされる。
trac envを作る。ここではpublicという名前にした。
cd $HOME/trac trac-admin public initenv Project Name[My Project]> Database connection string [sqlite:db/trac.db]> (何も書かないで改行)
cgiファイル生成・配置
trac-admin public deploy public cp $HOME/trac/public/cgi-bin/trac.cgi $HOME/www/trac/public.cgi(ドキュメントルート以下ならどこでも)
$HOME/www/trac/public.cgiの最初の論理行として、これを書いておく。
import sys sys.path.append("$HOME/usr/local/lib/python2.7/site-packages") sys.path.append("$HOME/usr/local/lib/python2.7/site-packages/Trac-1.0.ja1-py2.7.egg") sys.path.append("$HOME/usr/local/lib/python2.7/site-packages/Babel-0.9.6-py2.7.egg") sys.path.append("$HOME/usr/local/lib/python2.7/site-packages/Genshi-0.6-py2.7.egg")
public.cgiの権限設定
chmod u+x $HOME/www/trac/public.cgi
trac-admin $HOME/trac/public repository addrepository resync
ここでエラー。はてな?
TracError: Unsupported version control system "svn": Can't find an appropriate component, maybe the corresponding plugin was not enabled?
調べたところ、$HOME/trac/public/conf/trac.iniにこれを追記する。
[components] tracopt.versioncontrol.svn.svn_fs.subversionconnector = enabled
trac-adminシェルをいったん閉じて、再度resyncすると、また別のエラー。はてな?
TracError: Unsupported version control system "svn": No module named svn
調べたところ、svn-pythonというSubversionのPythonバインディングが必要で、それはSubversionのソースファイルに含まれていて、インストールにはswigとやらが必要なんだそうな。
swigとsvn-pythonをインストール。
http://www28.atwiki.jp/worktip/pages/14.html
wget http://prdownloads.sourceforge.net/swig/swig-2.0.8.tar.gz tar zxvf swig-2.0.8.tar.gz cd swig-2.0.8 ./configure --prefix=~/usr/local make make install tar zxvf subversion-1.6.16.tar.gz cd subversion-1.6.16 which swig ./configure --prefix=~/usr/local \ --enable-swig-bindings=python \ --with-swig=~usr/local/bin/swig make swig-py make install-swig-py #installとswigの間にハイフンが要ることに注意 echo $PYTHONPATH ln -s $HOME/usr/local/lib/svn-python/svn $HOME/usr/local/lib/python2.7/site-packages/svn ln -s $HOME/usr/local/lib/svn-python/libsvn $HOME/usr/local/lib/python2.7/site-packages/libsvn python -c "import svn"
これで万事OKのはず。またresyncする。
trac-admin $HOME/trac/public repository resyncResyncing repository history for ... 1 revision cached. Done.
いいぞ!その調子だ!
それで、svn commitと同時にtracのリポジトリブラウザが更新されるように前に書いたpost-commitファイルを作っておく。
SVNリポジトリ配下のhooks/post-commit.tmplをhooks/post-commitにコピーして編集する。
#!/bin/sh PYTHONPATH=※; export PYTHONPATH ※:これがないとhookスクリプトがtrac-adminを叩くときにImportErrorがくるけど、もう面倒なので※のところに、シェルでtrac-adminが動く状態でのpython -c "import sys; print ':'.join(sys.path)"の出力を貼っておく。 REPOS="$1" REV="$2" $HOME/usr/local/bin/trac-admin $HOME/trac/public changeset added "$REPOS" "$REV"
実行権限をつけておく。
chmod a+x post-commit
さて、hookスクリプトのチェックをしましょうかね、とsvn commitしたところでエラー。もうやだ。
svn: Commit failed (details follow): svn: Couldn't perform atomic initialization svn: Couldn't perform atomic initialization svn: SQLite compiled for 3.7.9, but running with 3.7.6.2
調べたところ、リポジトリを古いバージョンのものとして作っておくといいそうな。
http://www.snowbotic.com/archives/61
svnadmin create --pre-1.6-compatible
解決。hookスクリプトも走る。あー。
見るだけでログインしないし、trac.iniの[components]にこれを追記。
trac.web.auth.loginmodule = disabled
シンタックスハイライトを使う。
Pygmentsがおすすめなんだそうで。
easy_install --prefix=$HOME/usr/local pygments
おまけ:Pygmentsに好きなスタイルを追加する。
ここではhonzaさんのvim2pygmentsを使って、気に入っているVimのカラースキームを追加してみた。
vim2pygments.tar.gzのダウンロードページはここ。
cp $HOME/usr/local/share/vim/vim73/colors/desert.vim ./ tar zxvf honza-vim2pygments-19a9339.tar.gz python honza-vim2pygments-19a9339/vimpygments.py desert.vim > vim_desert.py cp vim_desert.py $HOME/usr/local/lib/python2.7/site-packages/Pygments-1.5-py2.7.egg/pygments/styles/
エディターで$HOME/usr/local/lib/python2.7/site-packages/Pygments-1.5-py2.7.egg/pygments/styles/__init__.pyを開く。
#: Maps style names to 'submodule::classname'. STYLE_MAP = { ... "Vim_Desert": "vim_desert::DesertStyle", # この行を追加する。vim_desert.pyにDesertStyleというクラスがあるってこと。 }