Mac OS X に memcached をインストールして launchd で自動起動するようにした
Mac のパッケージ管理には fink を使ってて、fink にないパッケージはソースからインストールするという方針でやってます。 memcached は fink で用意されてないのでインストールしてみました。
libeventをインストール
memcached をインストールしようとしたら libevent がないと言われたので、まずは libevent をインストール。
% ./configure --prefix=/opt/libevent % make % sudo make install
ソースからインストールするパッケージはすべて /opt/package にインストールするという方針でやってます。 こうしないと簡単にアンインストールできなくて、インストールしたソフトウェアの管理が簡単にできないので。
memcached のインストール
./configure を実行する前に /opt/libevent/lib を環境変数 LD_LIBRARY_PATH に /opt/libevent/include を環境変数 C_INCLUDE_PATH に通しておきます。 こうしないとインストールした libevent が見つからないのでコンパイルに失敗します。
% source ~/.zsh/.zlogin
環境変数はいつも自動で設定しているので、.zlogin を読み込み直すだけで OK。
% ./configure --prefix=/opt/memcached % make % sudo make install
インストール完了。 起動して問題ないか確認してみる。
% source ~/.zsh/.zlogin % memcached
うまくいってるようだ。
launchd で自動起動の設定
Mac OS X 10.4 で導入されたらしい launchd を使ってみる。 ユーザ個別の設定は $HOME/Library/LaunchAgents に XML 形式のファイルを置くといいみたい。 man launchd.plist すると詳しい説明が出てきます。
memcached.plist を作る。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"><dict> <key>Label</key> <string>memcached</string> <key>OnDemand</key> <false/> <key>ProgramArguments</key> <array> <string>/opt/memcached/bin/memcached</string> <string>-m 32</string> </array> </dict> </plist>
launchd に登録する
% launchctl load -w Library/LaunchAgents/memcached.plist % launchctl list memcached % ps x|grep memcached 6286 ?? Ss 0:00.07 /opt/memcached/bin/memcached -m 32
ちゃんと登録されて実行されている。
launchd への登録は別にコマンドで実行しなくてもログインしなおすと登録されるようです。わからないこと
ログアウトしても memcached が実行されたままになってる。 例えばログアウトして他のユーザでログインした場合は memcached を起動しないようにしたいんだが、どうすればいいのかよくわからない。 まあ、どうせ自分でしか使わないのでこれでよしとする。