btoメモ

なんか適当に書く

Mac OS X に memcached をインストールして launchd で自動起動するようにした

Mac のパッケージ管理には fink を使ってて、fink にないパッケージはソースからインストールするという方針でやってます。 memcachedfink で用意されてないのでインストールしてみました。

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 を起動しないようにしたいんだが、どうすればいいのかよくわからない。 まあ、どうせ自分でしか使わないのでこれでよしとする。