memcachedとTokyo Tyrantのインストール on FreeBSD
linuxじゃないので,先に明示的にlibeventを入れてからです.
> su # pkg_add -r libevent Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7.2-release/Latest/libevent.tbz... Done. # exit exit > wget http://memcached.googlecode.com/files/memcached-1.4.2.tar.gz > tar xvf memcached-1.4.2.tar.gz > cd memcached-1.4.2 > ./configure > make > su # make install # exit exit > memcached -vv failed to listen on TCP port 11211: Address already in use
しまった,昨日のROMAが立ち上がりっぱなしでした(笑)
# ps agx|grep ruby 23758 ?? Ss 1:29.92 ruby ./bin/romad localhost -p 11211 -d 24013 p2 S+ 1:28.63 ruby ./bin/romad localhost -p 11212 --verbose 63251 p3 R+ 0:00.00 grep ruby # killall 'ruby' > memcached -vv slab class 1: chunk size 80 perslab 13107 (中略) <16 server listening (auto-negotiate) <17 send buffer was 9216, now 233016 <17 server listening (udp) <17 server listening (udp) <17 server listening (udp) <17 server listening (udp) <18 new auto-negotiating client connection 18: Client using the ascii protocol (別なターミナルから) # telnet localhost 11211 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. set test 0 0 8 test des STORED get test VALUE test 0 8 test des END
Ok.
Tokyo Tyrantも入れます.今度はあらかじめmemcachedは落としておきました.当然,最初にTokyo Cabinetを入れます.
> wget http://1978th.net/tokyocabinet/tokyocabinet-1.4.35.tar.gz > tar xvf tokyocabinet-1.4.35.tar.gz > cd tokyocabinet-1.4.35 > ./configure > make -i > su # make install (FreeBSDではbinプログラムの作成に失敗しますが,メンドクサイので無視.ライブラリさえ出来ていれば良いです)
次にTokyo Tyranto入れます.
ただし,そのままではFreeBSDではエラーが出るので,myconf.hに手をいれます.
#if defined(_SYS_FREEBSD_) || defined(_SYS_NETBSD_) || defined(_SYS_OPENBSD_) #define nan(TC_a) strtod("nan", NULL) #define nanl(TC_a) strtold("nan", NULL) // 追加 #endif
> wget http://1978th.net/tokyotyrant/tokyotyrant-1.1.36.tar.gz > tar xvf tokyotyrant-1.1.36.tar.gz > cd tokyotyrant-1.1.36 > ./configure > gmake > su # gmake install mkdir -p /usr/local/include (中略) #================================================================ # Thanks for using Tokyo Tyrant. #================================================================ # ttserver -port 11211 2009-10-25T20:28:48+09:00 SYSTEM --------- logging started [69609] -------- 2009-10-25T20:28:48+09:00 SYSTEM server configuration: host=(any) port=11211 (中略) 2009-10-25T20:28:48+09:00 SYSTEM listening started (別なターミナルで,御馴染みのテスト) # telnet localhost 11211 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. set test 0 0 8 test des STORED get test VALUE test 0 8 test des END
Ok. ちなみにFreeBSDではmakeコマンドではうまくインストールできなかったので注意です(gmakeを使います).Linuxはmake=gmakeなので心配要りません.
準備の最後として,libmemcachedを入れます.
> wget http://download.tangent.org/libmemcached-0.34.tar.gz > tar xvf libmemcached-0.34.tar.gz > cd libmemcached-0.34 > ./configure > make > su # make install
最後に,キャッシュのテストプログラムで使うので,SF-メルセンヌツイスタを入れておきます.
> wget "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/bin/dl/dl.cgi?SFMT:SFMT-src-1.3.3.tar.gz" > tar xvf SFMT-src-1.3.3.tar.gz > cd SFMT-src-1.3.3 > su # cp SFMT.c SFMT.h SFMT-params*.h /usr/local/include/
メルセンヌツイスターのテストプログラムは,例えばこんな感じ.
#import <iostream> #include <time.h> #include <SFMT.c> using namespace std; int main() { int seed = time(NULL); init_gen_rand(seed); for(int i=0;i<10;++i) cout<<gen_rand32()%10<<endl; return(0); }
そして
> c++ client.cc -I/usr/local/include In file included from /usr/local/include/SFMT.c:16, from client.cc:4: /usr/local/include/SFMT-params.h:6:4: warning: #warning "MEXP is not defined. I assume MEXP is 19937." > ./a.out 9 5 1 9 9 9 3 1 1 8
では準備ができましたので,テストに入りましょう.