社内ではバグ管理システム cikloneをほとんど全てのプロジェクトで利用しています。
開発の管理だけではなく、お客様との打ち合わせ、社内ミーティングのWikiページを作成し、議事録として残しています。

議事録を書いていて、大切なことに「やること」を記録しておくこと、というのがあります。
Wikiでは 「AI ブログに記事を追加する (sugimoto)」 (AI : Action Item)なんて書いているんですが、やっぱり「やること」=「タスク」はチケットで管理したいものです。

で、Wikiからチケットを作成する、WikiCreateTicketPlugin を作りました。

インストール

レポジトリからインストールします。0.11と0.12で動作検証済みです。

> easy_install http://trac-hacks.org/svn/wikicreateticketplugin/0.11/

WikiCreateTicket プラグインを使う

チケットの作成は以下のフォーマットです。

  • #new foobar => foobar というチケットを作成
  • #new [obama] foobar => foobar というチケットをobamaさんがownerとして作成

こんな感じで、「やること」を #new の後に書いていきます。

Wikiページを普通に保存すると「#new」のところが「#972」とチケットへのリンクになります。

そうです。チケットになっています。チケットオーナーは [taro] で指定したとおり、taroさんになりました。
議事録担当者はずいぶん楽になりそうですね。

社内標準でTracベースのバグ管理システム cikloneを使い始めてかなり経ちます。
使っていく中で、多いのがプロジェクトによってはいつも同じページを参照していて、そこにショートカットが欲しいなー。
というものです。

とはいえ、自分の為にWikiStartにリンクつくるのもどうかなと思うし。。

そんなわけで、Tracにブックマーク機能を追加する、BookmarkPlugin を作りました。

インストール

レポジトリからインストールします。0.11と0.12で動作検証済みです。

> easy_install http://trac-hacks.org/svn/bookmarkplugin/0.11/

Bookmark プラグインを使う

ブックマークプラグインをインストールして、enableしたら、ログインしましょう。
ログインすると、コンテキストメニュー(グローバルメニューの下) に灰色の星マークが表示されます。

灰色の星マークをクリックすると、黄色に変わります。

これでブックマークされました。右端の “Bookmark” というリンクからプルダウンで該当のページに行くことができます。
黄色の星マーククリックで削除です。

“Bookmark” リンクそのものは /bookmark というページにリンクしていて、ブックマークの一覧を表示します。

BookmarkPluginは初めてtrac-hacks に上げたプラグインなのですが、VotePluginを参考にして作りました。

Trac内にフォーラムを作ることができる、DiscussionPlugin 。

フォーラムは世の中にもよくあるので、どういうものかは想像出来るんですが、Tracで使うとなると、

  • 仕様や、実装面での細かな確認
  • 運用時のナレッジデータベース

なんかで使えそうですね。チケットのように、目的がはっきりしていて、終了するとクローズみたいな感じでもないけれども、Wikiのようにドキュメント化するような話でもない。といったところですね。

インストール

レポジトリからインストールします。

> easy_install http://trac-hacks.org/svn/discussionplugin/0.11/
 File "/usr/lib/python2.4/site-packages/TracDiscussion-0.7_r8725-py2.4.egg/tracdiscussion/api.py", line 1334
      'where' : 'WHERE ' + where if where else ''}
                                  ^
  SyntaxError: invalid syntax

エラーとなりました。。。しかも、SyntaxError って。。。

 'where' : 'WHERE ' + where if where else ''}

どうやら、Python 2.4 ではサポートされていない if 構文が使われているようです。何箇所かありますが、全部変更してしまいましょう。

> svn checkout http://trac-hacks.org/svn/discussionplugin/0.11/
> .
> . => api.py を直して。。
> .
> easy_install 0.11/
Processing
Running setup.py -q bdist_egg --dist-dir /tmp/tracdiscussion/egg-dist-tmp-aJVXGj
zip_safe flag not set; analyzing archive contents...
Adding TracDiscussion 0.7-r8725 to easy-install.pth file

Installed /usr/lib/python2.4/site-packages/TracDiscussion-0.7_r8725-py2.4.egg
Processing dependencies for TracDiscussion==0.7-r8725
Finished processing dependencies for TracDiscussion==0.7-r8725

今度は上手くインストールできました。

Discussin プラグインを使ってみる

trac.ini にデフォルトの設定を追加したら、Discussionを使ってみます。

まずは管理画面でDiscussion Plugin がenableされていることを確認します。

ナビゲーションも表示されています。

まっさらなDiscussion画面、とりあえず、ひとつフォーラムを立ち上げてみます。

出来ました!!が、見づらいです。。太字にするところが間違っているような気が。。

自作自演ですが、回答もいくつかしてみましょう。

やっぱり、少し見づらいですね。。。

フォーラムとトピックをいくつか入れてみました。
ナレッジデータベースとして使うと、とても良いものになりそうです。

検索にも対応しているので、蓄積されれば十分に有効利用できる気がします。

Python 2.4 用に変更した際の差分ファイル

DiscussionPluginをPython2.4ベースで動かすためのパッチ

Tracの日付入力はテキストボックスでめんどくさいな。。と思ったことが誰でもあるはず。
カレンダーポップアップ プラグインはそんな悩みを解決してくれる、はず。。

インストール

easy_install でインストールですね。

> easy_install http://trac-hacks.org/svn/calendarpopupplugin/0.11/

とりあえず使ってみる

wiki のHowto をみて設定してみます。

「まずは、ポップアップを表示したい input field のHTML-IDとファイル名を特定しましょう。」。。。もしかして、自分で1づつ指定しないといけないんですね。。
とりあえず、例の通りにやってみます。

[calendarpopup]
ids=duedate=MM/dd/yy  << これがDOM ID
files=milestone_edit.html << これがファイル名

どうやら、マイルストーンの期限にポップアップをつけるようです。

設定したら、マイルストーンページを確認してみます。

お、でました。

MM/DD/YY で入力できましたね。

さらに設定して使う

他に日付入力を探してみたんですが、意外とないです。。
マイルストーンの完了日は 時間も入力することになっていますが、ここにもポップアップを設定してみます。

今度は管理画面から設定

以下のように入力します。
files
- milestone_edit.html
ids
- completeddate,duedate=MM/dd/yy

フォーマットが。。。。そのまま更新したらエラーになってしまいました。。
フォーマットは id ごとに指定していくことになっているみたいです。

files
- milestone_edit.html
ids
- completeddate=MM/dd/yy,duedate=MM/dd/yy

チケットのカスタムフィールドで期限とか運用しているととっても便利な気がします。

awesome attachments とはなかなか勢いのあるネーミングです。

何がすごいと言ってるかというと、チケットへのファイルの添付をチケット作成前にできる。ということみたいです。
たしかに、tracではチケットに添付ファイルをつけるときは一度チケットを作ったあとに添付しないといけないので、画像を添付するときは
1. チケット作成
2. 画像ファイルを添付
3. 画像ファイルを展開するマクロ [[Image()]] をチケット本文に追加
みたいに面倒な感じでした。

0.11 版だけしか提供されていないですが、インストールしてみます。

インストール

まずはeasy_install コマンドでインストールします。

 
> easy_install http://trac-hacks.org/svn/awesomeattachmentsplugin/0.11

trac.ini には [components] セクションに2行書き足します。
この辺、マニュアルの通りですね。

 
trac.ticket.web_ui.TicketModule = off
awesome.awesomattachments.* = enabled

管理画面でプラグインを確認

enableになっています。

では、チケットを作ってみましょう。
チケット作成画面にアップロード用のフォームが追加されています。

プラスボタンで複数添付もできるようです。

画像をアップロードすると、なんと本文に自動的に Image マクロが追加されました。うーん、これは便利。

そんなわけで、チケットを作ると、画像が開いた状態で表示されます。

これはなかなか便利かもしれません。

チケット系

Ticket Change Plugin
コミットログをより詳細にチケットと関連付ける : プラグインページ
Awesome Attachments Plugin
チケット作成時にファイルの添付をすることができる : プラグインページ
Selectable calendar pop-up
任意の入力フィールドにカレンダー入力を追加できる : プラグインページ
Discussion Plugin
Tracにフォーラムを機能を追加する : プラグインページ
Wiki create ticket plugin
Wikiからチケットを作成 : プラグインページ

sugimotoです。

昨日のエントリでインストールしたTracですが、設定を日本語にしても日本語化されませんでした。。

0.12 からデフォルトでLocalizationに対応してるって聞いたのに。。

わざわざBabelをインストールしたし。

と思いながら、インストールマニュアルを読み直すと、書いていました。。

$ python ./setup.py compile_catalog -f

これですね。。
ちなみに easy_install ではだめみたいですね。

レポジトリからチェックアウトして、setup.py でインストールしなおしです。

> svn co http://svn.edgewall.org/repos/trac/trunk
> cd trunk
> python setup.py compile_catalog -f
> python setup.py install
> /etc/init.d/httpd reload

うまく日本語化されました。

様々な設定が煩わしくなってきた方、クラウド型バージョン管理のサイクロンなら登録1分ですぐお使い頂けますよ。

ちなみにサイクロンならこんな感じに見ることが出来ます。
■サイクロンプロジェクト概要ページ
サイクロンプロジェクト概要ページ

いつまでも無料でお使い頂けるフリープランがあります。是非お試しください。

サイクロンのフリープランはいつまでも無料です。

sugimotoです。

TracをLinuxにインストールする手順です。
今回は以下の構成でセットアップしています。

  • CentOS5.4
  • Aapache
  • WSGI
  • Trac0.12
  • SQLite

途中、エラーなど出て半日くらいかかりました。
今すぐ使いたい人は、Cikloneにサインアップして、今すぐ使いましょう。

必要なパッケージのインストール

インストールドキュメントには以下のパッケージが必要だと書いています。

  • Python
  • setuptools
  • Genshi
  • SQLite
  • Babel

それでは早速インストール

> yum install python

TracはPython 2.4以上で動作可能です。
CentOSでの最新バージョンは2.4.3でした。ちょっと古いがぎりぎりセーフですね。

> yum install sqlite

SQLite 3.3.6がインストールされました。

Python 2.4 の場合、SQLiteでTracを使うにはPySqliteが必要になります。
こちらのサイトからダウンロードします。

そして、PySqliteのページの要領でインストールします。

> wget http://pysqlite.googlecode.com/files/pysqlite-2.6.0.tar.gz
> tar xzvf pysqlite-2.6.0.tar.gz
> cd pysqlite-2.6.0
> python setup.py build_static install

setuptools のインストール

以下のサイトから egg ファイルをダウンロードします。

> wget http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c11-py2.4.egg#md5=bd639f9b0eac4c42497034dec2ec0c2b

shellのように起動せよ。ということなので、起動すると、インストールできたようです。

> sh setuptools-0.6c11-py2.4.egg
Processing setuptools-0.6c11-py2.4.egg
creating /usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg
Extracting setuptools-0.6c11-py2.4.egg to /usr/lib/python2.4/site-packages
Adding setuptools 0.6c11 to easy-install.pth file
Installing easy_install script to /usr/bin
Installing easy_install-2.4 script to /usr/bin

Installed /usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg
Processing dependencies for setuptools==0.6c11
Finished processing dependencies for setuptools==0.6c11

コマンドが使えることを確認

> easy_install -h

GenshiとBabelをインストール

GenshiとBabelはともに eash_install コマンドでインストールできます。

> easy_install Genshi
Searching for Genshi
Reading http://pypi.python.org/simple/Genshi/
Reading http://genshi.edgewall.org/
Reading http://genshi.edgewall.org/wiki/Download
Best match: Genshi 0.6
Downloading http://ftp.edgewall.com/pub/genshi/Genshi-0.6-py2.4.egg
Processing Genshi-0.6-py2.4.egg
Moving Genshi-0.6-py2.4.egg to /usr/lib/python2.4/site-packages
Adding Genshi 0.6 to easy-install.pth file

Genshi 0.6 がインストールできました。簡単です。

Babelも同じようにインストールします。

> easy_install Babel
Searching for Babel
Reading http://pypi.python.org/simple/Babel/
Reading http://babel.edgewall.org/
Reading http://babel.edgewall.org/wiki/Download
Best match: Babel 0.9.5
Downloading http://ftp.edgewall.com/pub/babel/Babel-0.9.5-py2.4.egg
Processing Babel-0.9.5-py2.4.egg
creating /usr/lib/python2.4/site-packages/Babel-0.9.5-py2.4.egg
Extracting Babel-0.9.5-py2.4.egg to /usr/lib/python2.4/site-packages
Adding Babel 0.9.5 to easy-install.pth file
Installing pybabel script to /usr/bin

Installed /usr/lib/python2.4/site-packages/Babel-0.9.5-py2.4.egg
Processing dependencies for Babel
Finished processing dependencies for Babel

Babel 0.9.5 プロジェクトページからダウンロード出来るのと同じ、最新版です。

Tracには最近はやりのMercurialやGit用のプラグインもありますが、デフォルトのソース管理となるSubverionはインストールしておきましょう。

> yum install subversion

Subversion 1.4.2 がインストールされました。Tracの正式サポートは 1.5, 1.6 みたいですね。。
「1.4 でも動くはずだけどね。」みたいに書いてます。。がんばれ。

Tracのインストールとプロジェクトの作成

さて、いよいよ Trac のインストールです。
今回は最新が使いたいので、0.12 ベータをインストールします。

> easy_install Trac==0.12b1

バージョンは == で指定するんですね。なんとも独特な。

2010/05/14追記: Tracを多言語対応するにはインストール前に言語ファイルのコンパイルが必要です。Tracを日本語化する場合は翌日の日記=>「日本語化したTracをインストールする」の方法でインストールしてください。

TracEnvの作成

Tracがインストールできたので、さっそくプロジェクトを作りましょう。
initenv コマンドを実行するとプロジェクト名など聞かれますので適宜入力します。

> mkdir -p /var/share/trac/projects/sandbox
> trac-admin /var/share/trac/projects/sandbox initenv

うまくいったようです。

> ll /var/share/trac/projects/sandbox/
total 36
drwxr-xr-x 2 root root 4096 May 13 18:19 attachments
drwxr-xr-x 2 root root 4096 May 13 18:19 conf
drwxr-xr-x 2 root root 4096 May 13 18:19 db
drwxr-xr-x 2 root root 4096 May 13 18:19 htdocs
drwxr-xr-x 2 root root 4096 May 13 18:19 log
drwxr-xr-x 2 root root 4096 May 13 18:19 plugins
-rw-r--r-- 1 root root   98 May 13 18:19 README
drwxr-xr-x 2 root root 4096 May 13 18:19 templates
-rw-r--r-- 1 root root   27 May 13 18:19 VERSION

ちゃんとプロジェクトが出来てますね。
デプロイ用のコマンドでCGIなどのファイルを作成しておきます。

> trac-admin /usr/share/trac/projects/sandbox deploy /tmp/deploy
> mv /tmp/deploy/* /usr/share/trac/.
> rm -fR /tmp/deploy

Apache で使うつもりなので、permissionも変えておきましょう。

> chown -R apache:apache sandbox

Apacheとmod_wsgiの設定

インストールマニュアルにはfcgiかmod_wsgiを推奨すると書いてあるので、今回は mod_wsgi でTracを使うことにします。
mod_wsgi はyumではインストール出来ません。
もう少しなんですが、ちょっとめんどくさくなってきましたね。。

> wget http://modwsgi.googlecode.com/files/mod_wsgi-3.2.tar.gz
> tar xzvf mod_wsgi-3.2.tar.gz
> cd mod_wsgi-3.2
> ./configure
checking for apxs2... no
checking for apxs... no
checking Apache version... ./configure: line 1704: apxs: command not found
./configure: line 1704: apxs: command not found
./configure: line 1705: apxs: command not found
./configure: line 1708: /: is a directory

checking for python... /usr/bin/python
./configure: line 1877: apxs: command not found
configure: creating ./config.status
config.status: error: cannot find input file: Makefile.in

エラーです。httpd-devel のコマンドが必要みたいです。
しょうがないので、インストールしましょう。

> yum install httpd-devel
> ./configure
> make
/usr/sbin/apxs -c -I/usr/include/python2.4 -DNDEBUG -D_GNU_SOURCE   mod_wsgi.c -L/usr/lib -L/usr/lib/python2.4/config  -lpython2.4 -lpthread -ldl  -lutil -lm
/usr/lib/apr-1/build/libtool --silent --mode=compile gcc -prefer-pic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -fno-strict-aliasing  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -pthread -I/usr/include/httpd  -I/usr/include/apr-1   -I/usr/include/apr-1  -I/usr/include/python2.4 -DNDEBUG -D_GNU_SOURCE  -c -o mod_wsgi.lo mod_wsgi.c && touch mod_wsgi.slo
mod_wsgi.c:135:20: error: Python.h: No such file or directory
mod_wsgi.c:138:2: error: #error Sorry, Python developer package does not appear to be installed.
mod_wsgi.c:142:2: error: #error Sorry, mod_wsgi requires at least Python 2.3.0 for Python 2.X.
mod_wsgi.c:150:2: error: #error Sorry, mod_wsgi requires that Python supporting thread.

またまたエラーです。
プロジェクトホームページに解説がありました。

通常のLinuxパッケージでインストールしたPythonにはヘッダーファイルが無いので
dev パッケージを入れなさいと言っています。

> yum install python-devel
> ./configure
> make
> make install

今度はうまくいきました。

では Apacheに mod_wsgi をロードして、trac環境を作りましょう。

/etc/httpd/conf.d/trac.conf を以下のように作成します。

LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / /usr/share/trac/cgi-bin/trac.wsgi

    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all

やっとセットアップが終了、かなり大変でした。。
Apacheを起動して、確認します。

> /etc/init.d/httpd start

一応、Tracの画面が表示されました。

でも使う前に、まだやることがあるようです。。。

  • サイトの日本語化
  • チケット作ろうと思ったら、認証情報がないといわれた。。
  • Subversionとの連携
  • プラグインとか入れたい

だんだん面倒になってきたあなたにはクラウド型バージョン管理のサイクロンがあります!サイクロンの画面イメージはこんな感じ。

■ サイクロンダッシュボード画面 サイクロンのダッシュボード画面 サイクロンにはいつまでも無料 でお使い頂けるフリープランもあります。是非1度お試しください。 サイクロンのフリープランはいつまでも無料です。