肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

trac 0.10.4/5 を 0.11 に upgrade したときのメモ


あー疲れた。


色々苦労しましたがようやく。
ていうかなんでハマってたのかわからないけどいつのまにか復活した(r ので、まぁいいや。世の中よくわからないけど動かないとか、よくわからないけど動いたとかが多いなw

trac-0.11.1 がリリースされていた(日本語版も)ので、自分とこで動かしていた trac 0.10.4 と 0.10.5 を アップグレードしました。
色々ハマったのでちょいちょいメモ。

参考にしたサイト:

ていうか、もう、↑の1番目のサイトみれば全部載ってる。

あっ、アップグレード前のバックアップはわすれずにね!


環境:

必要なものをインストール

PyPiの easy_install は前のエントリで設定済みとして、

% sudo easy_install genshi
% sudo easy_install pygments

GenshiはこれまでのClearSilverにかわるテンプレートエンジン、Pygmentsはシンタックスハイライトに使う新しいライブラリだと。

0.10.4/5 を削除

0.11/TracUpgrade – The Trac Projectに、

If you do a manual (not operating system specific) upgrade, you may also later on want to remove the existing Trac code by deleting the trac directory from the Python lib/site-packages directory.

と書いてあるもんだから、一応やっておいた。

% sudo rm -rf /usr/lib/python2.4/site-packages/trac
% sudo rm -rf /usr/share/trac

Trac-0.11.1.ja のインストール

まぁ別に日本語版じゃなくても良い気がするけど。。

一応。。。

から、Trac-0.11.1.ja1.zip をダウンロード。解凍してインストール。

% unzip Trac-0.11.1.ja1.zip
% cd Trac-0.11.1.ja1
% sudo python setup.py install

既存のtrac envの upgrade

/path/to/tracenv は適当におきかえてね!

% sudo trac-admin /path/to/tracenv upgrade
% sudo trac-admin /path/to/tracenv wiki upgrade

mod_python の設定に PYTHON_EGG_CACHE を追加

一番ハマったとこ・・・。
まぁどうせ一度はエラー出るとは思ったけど、apacheを再起動させたら、

MOD_PYTHON ERROR 

とか出て、ハァ?ってかんじ。

で、必要だったのは、PYTHON_EGG_CACHEの設定項目を加えることだったぽい。

tracの conf が記述してあるところに(私の場合、 /etc/httpd/conf.d/trac.conf)、

<Location /url/to/trac>
   SetHandler mod_python
   PythonHandler trac.web.modpython_frontend
   PythonOption TracEnvParentDir /path/to/
   PythonOption TracUriRoot /trac
   PythonOption PYTHON_EGG_CACHE /path/to/tracenv/.egg-cache
</Location>

といったかんじで、PYTHON_EGG_CACHEの項目を追加。

これってテンプレートエンジンが変わったから?本体のアップグレードに伴うもの?キャッシュファイルが必要になったってことなのかな。。

trac-post-commit-hook などの hook スクリプトをアップグレード

最後に、svnの post-commitから呼び出される hookスクリプトたちをアップグレード。必要なら、ね。
Trac-0.11.1.ja1のcontribの中に入ってあるスクリプトをコピーして終了。

カスタムCSSとかを入れる場合

これもtracのhelpの TracInterfaceCustomization に書いてあることだけど、Genshiのテンプレートエンジンに適用する形でsite設定を変えなきゃいけない。
これがちょっとめんどい。
テンプレートの継承使ってるんだろうけど、いじったことないからなあ。。

で、これまでの templates に入っていたファイルは全部いらない。いらないというか、部品は全部デフォルトを継承した site.html に、詰め込むことで実現できそう。

とにかく、今回はcssだけを追加したかったので、

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:py="http://genshi.edgewall.org/"
    py:strip="">

<!--! Add site-specific style sheet -->
<head py:match="head" py:attrs="select('@*')">
    ${select('*|comment()|text()')}
  <link rel="stylesheet" type="text/css"
    href="${href.chrome('site/site_css.css')}" />
</head>

</html>

こーんなかんじで htdocs の中の site_css.css を読み込ませた。これまで templates に入っていた site_css.cs は、site_css.cssにリネームして(似てるけど、まったく別物w)、htdocsに配置。

その他よくわからないけどリポジトリブラウザでエラー

(追記)

見れるときと見れないときがあった。リロードしたらソースコード見れるのに、またリロードしたら見れないとか。
ほんとこれは意味不明であほかと思った。pygments がエラー吐きまくってた。
メモリの問題?という話もあったけど、とりあえず pygments を中心に調べてたら、

Note that SilverCity 0.9.6 has a bug that breaks Python syntax highlighting in Trac. Until an update is made available, we recommend using version 0.9.5.

TracInstall – The Trac Project

という記述もあったので、入っていた 0.11.1 を削除して、 0.9.5 を入れようとしたんだけど、easy_install で 0.9.5 を探しても、0.9 に一緒くたにされてた。だから

% easy_install pygments == 0.9

とかしてやった。
そしたらエラーきえたー!

ところが、ですよ。その後、そのエラーメッセージとかをログをブログに残すために、0.11.1 を入れなおしたんですよ。そしたら、もう二度とエラーでなかったんですよ。。。

というわけで、上記の苦労は無駄で、なんとなく 0.11.1 でも大丈夫な気がします。インストールしなおせばよかったとかそういう話ですかね?(結局なにもわからなかったw

よくなった点とか

  • ディレクトリが動的に読み出せる。(CodeReposもすでに0.11だから、まぁあんなかんじ。)
    • 矢印クリックすると、下層のディレクトリが開く
  • trac-admin でしか出来なかったことがウェブ上から管理できるようになった(下の画像。コンポーネントなど変更追加削除だけでなく、これまで変更できなかった、解決方法とかの言い回しやパーミッション関連も変更可能)
  • Genshi使うようになったからスマートにカスタマイズできるようになったのだろうけど、なんかいじる自信ない・・・
  • TracWorkflow – The Trac Project チケットのワークフローが設定できるようになったらしいが、よくわからない(ぉ




悪くなった点。

  • 重い。


サクサクうごくtracが好きだったのに。。。



以上。たぶん。

追記

tracのhookが動いてなかった(コメントの。)のは、こちらも PYTHON_EGG_CACHE が設定されていなかっため(結局、デフォルトで動作させればいいやーと思って /var/www/.python-eggs に書き込み権限を持ったファイルを touch して終了)。
ウェブ上で動かすわけでもないのに必要なのかなあ・・・