2007-11-11

TracStandaloneが地味にエンハンスされている

いままで「デバッグくらいにしか使わないでくれ」と言われていた、tracdが見た目は地味に、中身は濃ゆくエンハンスされている。起動方法といえばmod_Python一色で、人柱な人がFastCGIを使いはじめていた状況からは一変するかも。
まずはオプションを引用。

$ tracd --help
Usage: tracd [options] [projenv] ...

Options:
--version show program's version number and exit
-h, --help show this help message and exit
-a DIGESTAUTH, --auth=DIGESTAUTH
[projectdir],[htdigest_file],[realm]
--basic-auth=BASICAUTH
[projectdir],[htpasswd_file],[realm]
-p PORT, --port=PORT the port number to bind to
-b HOSTNAME, --hostname=HOSTNAME
the host name or IP address to bind to
--protocol=PROTOCOL http|scgi|ajp
-e PARENTDIR, --env-parent-dir=PARENTDIR
parent directory of the project environments
--base-path=BASE_PATH
base path
-r, --auto-reload restart automatically when sources are modified
-s, --single-env only serve a single project without the project list
-d, --daemonize run in the background as a daemon
--pidfile=PIDFILE When daemonizing, file to which to write pid

いろいろ妄想が沸くUSAGEじゃない?
もう眠いので、この続きは明日。

どのDBでTracEnvを作るか

結論から先に。気にするな。開発者も言ってる通りたいていはSQLiteで事足りる。レスポンスが遅くなってから乗り換えを考えれば充分。

使えるDBはSQLite, PostgreSQL, MySQLのまま変わりなし。
新機能はPostgreSQLでPUBLICスキーマ以外を使えるようになったこと。trac.iniとかでDB接続を書くときにURLパラメータぽく

postgres://[dbuser]:[dbpass]@[host]/[dbname]?schema=[schemaname]
と書く。 そのほかにもパラメータ系統のオプション利用はいろいろありそうな予感。

Trac ProjectのWikiだと暗黙にしか触れてないけど、現時点(trunkのr6139)のDB要件は:

  • DBユーザにSELECT, INSERT, UPDATE, DELETEGRANTされている。
  • DBユーザにTABLE, INDEXCREATE, ALTER, DROPGRANTされている。
  • エンコードがUTF-8であること。

という感じ。たぶん。
SQLiteを使ってる間は関係ないけど、DBを乗せ換える時はエンコード指定をしないとダメそう。TracEnvironment#PostgreSQLConnectionStringとか、MySqlDb参照で。

と、ここまで書いて、DBをmigrateするためのスクリプトがないのに気付いてしまった。(楽観論的観測では)簡単につくれてcontributeが受け入れられやすいので、誰か立ち上がってみないですか(w

0.11b1くらいは出るかと思ったが、context-refactoringの次はtimeline-refactoringらしい。今まで放置されていたTracDevToDoをcboosたんがメンテナンスしたらしいので精読せねば。

2007-11-10

ことはじめという名のインストール

Trac-0.11(まだ開発中)を本格的に触り始めたので、新機能のレポートを書く気になった。

何はともあれインストールしないと話にならないので、環境の選択から。 ころころリビジョンを変えることを考えると、やはりパッケージングして簡単にインストール/アンインストールできるようにしたい。
ざっくり4択:

  • Windows
  • Mac OS X
  • Linux (RPM系)
  • Linux (deb系)

setup.pyで作れるパッケージはWindows Installer, RPM, Python Eggだが、このうちOSの標準という意味ではWindowsかLinux (RPM系)。という考えで、お金がかからなくて(VMで展開したい)、長期に使えて、という理由でCent OSを使っていたけど、今回はあえてUbuntuのしかも7.10で。
なぜって、Trac-0.11に必要な周辺パッケージが全部必要なバージョンで準備されているから。
Cent OSだとdocutilsとかsetuptoolsとか普及していて、みんな普通に使うだろうというやつまで、DAGとかに頼るか自分でビルドしないといけないので、同じ環境を展開して維持するのが面倒そうだと思ってしまったのが大きいか。

debian系を触ったのはものすごく久し振りで、その上(たぶん)Ubuntuならではの「全部sudo」という流儀には違和感を感じるけど、何日か使ってたら慣れた。

じゃお待ちかねのインストールしたパッケージ一覧で:

  • apache2-mpm-worker (別にpreforkでもいいけど、使ってみたくなった)
  • libapache2-mod-fastcgi
  • libapache2-mod-python
  • libapache2-svn
  • mysql-server-5.0
  • postgresql-8.2
  • python-clearsilver
  • python-docutils
  • python-genshi
  • python-mysqldb
  • python-psycopg2
  • python-pygments
  • python-pysqlite2
  • python-setuptools
  • python-subversion
  • sqlite3
  • subversion

これだけ全部揃ってるのは、Cent OSから比べると壮観。これだったらTrac本体はEggでインストールしてても元が取れる気がしない?

で、Eggのインストールは:

$ svn checkout http://svn.edgewall.org/repos/trac/trunk trac
$ cd trac
$ ./setup.py bdist_egg
$ sudo easy_install dist/Trac-0.11dev_r*.egg
$
という感じ。まぁ細かくは誰かがやってくれることでしょう。

とか書いているうちにcontext-refactoringブランチがtrunkにマージされた。そろそろbetaのタグくらいは打たれるかな?