2008-05-22

Trac に Graphviz

ダイアグラムをチケットに貼りたいときに、OpenOffice Draw を使ってましたがノード数が少ない簡単なものの時は面倒でした。整形済みテキストマークアップ {{{...}}} で ASCII アートすると、今度は修正が大変。

TracGraphviz が使える GraphvizPlugin があることは知っていたけど、一度挑戦してうまく行ってなかったが今回、再チャレンジで成功。なんのことは無い、「エラーメッセージをよく読みましょう」と、いう類のことでした。

こんな環境です。

まず、Graphviz を単体で動くようにしておきます。RHEL 5 用のパッケージを使いました。

  • graphviz-2.16.1-1.el5.i386.rpm
  • graphviz-gd-2.16.1-1.el5.i386.rpm

GraphvizPlugin では、PNG 出力を使うため graphviz-gd が必要だったことが最初の躓き。

echo "digraph G {Hello->World}" | dot -Tpng >hello.png


これが、動作すれば OK だと思う。



次に GraphvizPlugin 。ここからダウンロードした、graphvizplugin.zip を展開して



# cd graphvizplugin/0.10
# python setup.py bdist_egg
running bdist_egg
~~~
~~~
creating 'dist/graphviz-0.6.11-py2.4.egg' and adding 'build/bdist.linux-i686/egg' to it
removing 'build/bdist.linux-i686/egg' (and everything under it)

# python setup.py install
running install
~~~
~~~
Installed /usr/lib/python2.4/site-packages/graphviz-0.6.11-py2.4.egg
Processing dependencies for graphviz==0.6.11
Finished processing dependencies for graphviz==0.6.11


これで、サイトワイドにインストールできたので httpd 再起動。



Trac の WebAdmin で Plugins に graphviz 0.6.11 が現れるので enabled して、Apply changes 。



trac.ini に 以下追加



[graphviz]
cmd_path = /usr/bin
cache_dir = /キャッシュ/への/フルパス
cache_manager = yes
cache_max_size = 10000000
cache_min_size = 5000000
cache_max_count = 2000
cache_min_count = 1500


cache_dir は、web サーバーが書き込めるディレクトリにする。これで、以下のマークアップで日本語を含むダイアグラムが表示されました。



{{{
#!graphviz
digraph sample {
node [fontname="/usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf"];
こんちわ -> みなさん;
}
}}}