Wednesday, January 10, 2007

memcached インストール

memcached 1.2.1 をインストールしてみた。

http://www.danga.com/memcached/

ダウンロード・解凍し、README を読んでみると、libevent というライブラリが必要であり、libevent は epoll を実装したカーネルに依存するとある(Linux の場合)。epoll は必須というわけではなく、libevent は通常の select システムコールを使っても動くらしいが、その選択はいいとはいえないらしい。

http://www.linux.or.jp/JM/html/LDP_man-pages/man7/epoll.7.html

Linux カーネル 2.6 以降なら epoll は実装されているようで、これは問題なかった。


libevent 1.2a をダウンロードして、インストール。

http://www.monkey.org/~provos/libevent/

README にしたがい、

$ ./configure && make
# make install
$ make verify

でインストール。最後のは、Regression テスト。これで /usr/local/lib/ にインストールされた。また、/usr/local/bin/ に event_rpcgen.py という Python スクリプトもインストールされる。

この後、memcached も次のようにインストール。

$ ./configure --with-libevent=/usr/local/lib/
$ make
# make install

これで /usr/local/bin/ に memcached と memcached-debug というコマンドがインストール。

以上が済んで、

$ memcached -m 256 -l 127.0.0.1 -p 11211

とすると、

memcached: error while loading shared libraries: libevent-1.2a.so.1: cannot open shared object file: No such file or directory


というエラーメッセージが出た。どうも先にインストールした libevent を見つけることができないようだ。実際、

$ ldconfig -p

とやっても、libevent は出てこない。/usr/local/lib は /usr/lib, /lib と違って、常に検索されるライブラリではないからだ。そこで、/etc/ld.so.conf を作成し、そこに ld.so.conf を記述し、ldconfig を実行した。こうすると、/etc/ld.so.cache に登録されるので、検索されるようになる。実際、ldconfig -p で確認できた。

その後、

$ memcached -m 256 -l 127.0.0.1 -p 11211

とすると、起動できた。-d オプションをつけるとデーモンになる。

$ telnet localhost 11211

で接続はできることを確認。後はクライアント API をセットアップしていろいろ試そう。

No comments: