launchdでtracを起動するための設定

今までtracをターミナルから手動で起動していたのだがいい加減面倒くさいので、OS起動時にtracを起動するようにlaunchdに設定します。

まずはlaunchdの設定ファイルを書くためのツール Lingon をインストール。
Lingon

インストールが済んだら Lingonを起動しUsersDeamonを追加し下記内容を追加。
※ Name: はお好きなユニーク名を
※ {ユーザー名}は自環境に置き換えてください。

Name: jp.ne.hatena.d.yasuno45.TracLaunchd
What: /opt/local/bin/tracd --port 8000 /Users/{ユーザー名}/trac/myproject
When: "Run it when it is loaded by the system"をチェック


ターミナルで動作確認
※ launchctl load の引数は上記で設定した Name: で指定したファイル

$ launchctl load /Library/LaunchDaemon/jp.ne.hatena.d.yasuno45.TracLaunchd.plist
$ launchctl start jp.ne.hatena.d.yasuno45.TracLaunchd

コンソールでエラーが出ていないことを確認。もしエラーが出ていたら設定を見直しlaunchctlでアンロード後にロード/開始

$ launchctl unload /Library/LaunchDaemons/jp.ne.hatena.d.yasuno45.TracLaunchd.plist


ブラウザからTracへアクセス。エンコーディング関係のエラーが表示される。

unknown encoding: X-MAC-JAPANESE

こちらを参考にdatefmt.pyのencoding設定を変更します。

datefmt: /opt/local/lib/python2.5/site-packages/trac/util/datefmt.py

61行目のencodingを指定を下記のように変更

encoding = locale.getpreferredencoding() or sys.getdefaultencoding()
if encoding == 'X-MAC-JAPANESE':
    encoding = 'ascii'

これでOSXを起動するたびにtracも起動されるようになります。