Mac OS X Snow Leopard (もちろんMac OS X Serverじゃないよ) に MacOSforgeで公開されている Darwin Calendar Serverをインストールしたので、ここにメモをしておこうと思います。
いやー、なかなか情報が転がって無くて、./run コマンドと格闘しましたが、ビール片手に一通り機能を確認できましたので、この手順で大丈夫でしょう。
このメモは./runコマンドでテスト的にサーバを動作して検証するものではなく、/usr/local/bin/ や、/Systtem/Library/Frameworks/Python.framework/配下や/Library/Python配下へのインストールをしますので慎重に自己責任でお願いします。
1.まずは、モノを取ってきます。
最新のリリースは2.4のようです。もうすぐ3.0が出そうですね。
ということで、好きな自分のディレクトリで、
svn co http://svn.calendarserver.org/repository/calendarserver/CalendarServer/tags/release/CalendarServer-2.4
として、チェックアウトします。
2. runコマンドで必要なモノのPythonモジュールを取ってきて確認です。
CalendarServer-2.4のディレクトリに移動してrunコマンドを探してください。
$ ./run -s
これで、必要な構成やファイルを自動的に取得して、コンパイル等も行われます。
この辺は、情報はいろんなサイトが紹介しているので大丈夫だと思います。
$ ./run
これで、テスト的に動作させてちゃんと動くかテストできます。
このあたりも他のサイトが参考になるともいます。
3. さて、いよいよ実環境へのインストールです。
まず、いったん/tmp/dstディレクトリに実行ファイルや定義ファイルなど環境に合わせた形に吐き出します。
以下のコマンドはsuでrootになるか、sudoコマンドで実行してください。
# ./run -i /tmp/dst
/tmp/dstを見てもらうと、なるほど、こんなファイルが環境にインストールされるんだとわかると思います。
つまり、/tmp/dstディレクトリの内容を/ に配置すれば良いわけです。
いよいよ、/に配置しましょう。
# cd /tmp/dst
# pax -pe -rw . /
これで、Calendar Serverのデーモンが /usr/loca/bin/caldavd を使って起動できます。
しかし、環境によってはシンボリックリンクを張らなければならないかもしれません。
エラーファイルを見ればすぐにわかると思いますが、私の環境では
can’t open file ‘/usr/share/caldavd/bin/twistd’: [Errno 2] No such file or directory
なんて、表示され。。。おいおい。。。
# ln -s /usr/local/bin /usr/share/caldavd/bin
と、してやりました。(もしかして、./run -I で上手くいくのかも。。。)
4. Launchdによる自動起動の設定
svnでチェックアウトしてきた中のCalendarServer-2.4/contrib/launchd/calendarserver.plistファイルを適当に編集します。もちろん、/Library/LaunchDaemons/ へコピーしておきます。
ここで、ProgramArgumentsの引数(array)にcaldavdのディレクトリを変更するのと、caldavdの設定ファイルを指定するように記載してください。この、設定ファイルcaldavd.plist自身に中身は各自の環境に合わせてください。
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/caldavd</string>
<string>-X</string>
<string>-R</string>
<string>caldav_kqueue</string>
<string>-f</string>
<string>/System/Library/Frameworks/Python.framework/Versions/2.6/caldavd/caldavd.plist</string>
</array>
後は、LanuchDaemonに自動起動をお願いします。
# launchctl load -w /Library/LaunchDaemons/calendarserver.plist
最後に、私がはまった事を。。。といっても常識なのかもしれませんが。。。
uidが4文字以下だとアカウントを認識してくれないんです。orz
__uids__のファイルシステムを使う仕様なのかもしれませんが。。。uidの先頭2文字で第階層のディレクトリ名、2,3文字目で第2階層のディレクトリ名をつかってディレクトリの木構造を使うなんて。。。やはり、Kerberos使うべきだった。。。(^_^;