2010年1月アーカイブ

Ruby から kumofs に接続して、値を入れたり出したりしてみる。

環境

  • Linode 上のCentos 5.1
  • Ruby 1.8.7
  • Rubygems から memcache をインストール
  • kumofs 0.3.1

kumofs のインストール

kumofs のインストール自体は前のエントリに書いておきました。

Ruby への memcache のバインドをインストール

gemから:

# gem install memcache-client

問題なく入った。

kumofs を起動

チュートリアルにしたがう。サーバ1台だけで動かすので、そこだけ読み替える。

$ kumo-manager -v -l (ホスト名 or IPアドレス)
$ kumo-server -v -l (ホスト名 or IPアドレス) -m (ホスト名 or IPアドレス) -s /path/to/dbfile.tch
$ kumo-gateway -v -m (ホスト名 or IPアドレス) -t ポート番号
$ kumoctl (ホスト名 or IPアドレス) attach

準備完了。

簡単なスクリプト

ruby-memcache を通してkumofs をインタラクティブに操作するスクリプトをつくる。

shebangを適宜書き換えて...

$ ./imemcache.rb localhost:11211
$./rubymemcache.rb
localhost:11211> set please mrlostman
=> set(please,mrlostman)...mrlostman
localhost:11211> set little busters
=> set(little,busters)...busters
localhost:11211> get please
=> get(please)...mrlostman
localhost:11211> get little
=> get(little)...busters
localhost:11211> get hybrid
=> get(hybrid)...nil
localhost:11211> quit 
Type C-d to exit

キーがないときは nil が帰ってくるようす。エントリ書きはじめてから delete つくってなかったことに気づく。ううん。

kumofs について

最近 OSS としてリリースされて話題の Key Value Store。 試して見ようと思ってインストールしたら何度かつまづいたので、 メモしておきます。

  • Centos である
  • gccが4.1系である

という条件でコケる傾向にあるようです。 kumofs 0.3.0 でこれを解決するのはなかなか面倒っぽかったのですが、さっそく 0.3.1 がリリースされて俺でもビルドできたので、似たような環境で悩んでる人に助けになれば。

環境

米国 VPS のひとつ Linode 上の Centos 5.1 でインストールを試みました。Rubygems が入ってる以外はほぼ登録直後の状態。デフォルトで入っていたgccは4.1.2でした。こいつが諸悪の根源だったようす。

手順

基本的には以下の手順どおり:

必要なもの

Githubのwikiを参考に、今回入れたものをとかデフォルトで入ってたものを明記しときます。

  1. linux: 2.6.18 (デフォルト)
  2. gcc = 4.4.0 (yumから)
  3. g++ = 4.4,0 (yumから)
  4. ruby = 1.8.7 (デフォルト)
  5. Tokyo Cabinet >= 1.4.41 (ソースから)
  6. MessagePack for C++ = 0.4.1 (ソースから)
  7. MessagePack for Ruby = 0.3.2 (gemから)
  8. libcrypto (openssl) (デフォルト)
  9. zlib (デフォルト)
  10. kumofs = 0.3.1 (ソースから)

gcc 4.4とg++ 4.4 をインストール

gcc/g++ 4.1だとkumofs のビルドに失敗します( _syncandaddfetch_4 がどうとか言われる)。なので、先にgcc/g++ 4.4をインストールしておく。こいつらはTokyo Cabinet とかのビルドには使わなくてもOK。

yumから入ります。

# yum install gcc44 gcc44-c++
# gcc44 -v
# g++44 -v

Tokyo Cabinet をインストール

バックエンドとして利用される Tokyo Cabinet をインストールします。僕は 1.4.41 を利用。

./configure してようとするとbzip2がらみの何かがないとか言われます。そしたらdevelを入れてやりましょう。

# yum install bzip2-devel bzip2-libs
$ ./condifure
$ make
# make install

どこに入ったか覚えて置きましょう。デフォルトは /usr/local/libです。

Message Pack for C++ をインストール

SourceForgeのリリースページから最新版の 0.4.1 をダウンロードします。

で、ここで gcc44 と g++44 が登場。 ./configure します。

$ CC=gcc44 CXX=g++44 ./configure
$ make
# make install

ここでもインストール先を覚えておきましょう。デフォルトなら /usr/local/lib です。

Message Pack for Ruby をインストール

これはgemから。

# gem install msgpack

kumofs をインストール

これでラスト。最新版の 0.4.1 を使います。Githubのリリースページか、git clone します。

ここでも gcc44 と g++44 が登場。

$ CC=gcc44 CXX=g++44 ./configure
$ make
# make install

起動してみる

急いでインストールしたので、今回はkumo-manager を起動するだけです。

$ kumo-manager -v
kumo-manager: error while loading shared libraries: libtokyocabinet.so.9: cannot open shared object file: No such file or directory

おうふ! Tokyo Cabinet と MessagePack のインストール先を教えてあげましょう。

$ export LD_LIBRARY_PATH=/usr/local/lib
$ kumo-manager -v
usage: kumo-manager -l  -p 

  -p     --partner        master-slave replication partner
  -a                        --auto-replace   enable auto replacing
  -Rs             --replace-delay  delay time of auto replacing in sec.
  -k      --keepalive-interval     keepalive interval in seconds
  -Ys     --connect-timeout        connect timeout time in seconds
  -Yn     --connect-retry-limit    connect retry limit
  -Ci     --clock-interval         clock interval in seconds
  -TW     --write-threads          number of threads for asynchronous writing
  -TR     --read-threads           number of threads for asynchronous reading
  -o      --log                    output logs to the file
  -g     --binary-log             enable binary log
  -v                --verbose
  -d      --daemon

  v0.3.1 revision 5b53cc4277e6ed951db7f599de9fcfcd3738b2cd Wed Jan 20 15:52:34 2010 +0900

error: required but not set: -l

うふふ

血と細胞の鎖

2009年が終わった。

2000年代がそのひとつの区切りを終え、2010年代の最初の一年が幕を開けた。

90年代生まれの僕にとっては、「10年代」という響きはひどく奇妙に聞こえる。90年代や80年代、さかのぼって60年代くらいまでは何となく耳に馴染みを感じるんだけど、50年代くらいから少しずつ違和感が増してくる。基本的には(意識的にか無意識にかに関わらず)耳にした回数に反比例するのだと思う。

そんな10年代がはじまりを告げた。

20年代がはじまるとき、ぼくは29歳になっている。「今年で30」だなんて言っている。ぼくはどんな気持ちでその言葉を口にしているのだろう?そこにはどんな種類の重みが宿っているのだろう?

ぼくは誰に、何のためにそれを言うのだろう?

それは今のぼくには知りようのないことだ。10歳のとき、20歳になる年に何を思うか、何をしているかなんて考えもしなかったし、考えたとしてもすべての予想は決定的に外れている(予想というのは、あの世界を別にすれば本質的に外れるものなのかもしれない、というのはここでは置いておく)。

それだけに、大切な10年であろうと思う。2010年から2020年の間、僕はどのような僕に変わり、世界はどのような世界に変わり、その変化の間には何らかの関係が生まれているのだろうか?

わからない。

ただひとつ言えることは、結局のところ僕にできることは、流した血や剥がれ落ちた細胞を集めてもうひとつ自分を作り、それをどこかに押し隠す、そういったことの繰り返しなのだと思う。

歩いてきた足をふと止めて振り返る。そこには小さなビニール袋を一杯にするくらいのおびただしい量の血が流れており、バケツを溢れさせるだけの細胞が細かくちぎれた破片となって連なっている。それは遠い過去からぼくの足元まで、ゆらゆらと寄り道をした形跡を残しながら繋がる一本の線になっている。

2009

ぼくは歩いていた。というよりも歩いている。トンネルの中かどうかはわからないが、そうであっても不思議に思わないくらいに辺りは暗い。目に入るのは闇だけで、何度も何かにつまづくが、何につまづいたのかはわからない。積極的に襲ってくることはないから、害意を持った生き物ではないことだけはわかる。でもそれ以外には何もわからない。何につまづいたのかもわからないまま、ぼくはその歩みを続ける。死にはしないだろうという漠然とした自信だけを頼りに一歩ずつ歩く。

ぼくが足を進めるたびに、鎖が引きずられる重苦しい音がする。血と細胞の鎖は、僕からはるか遠くまで続いている。それは闇の奥に消えていて、どこから来ているのかはわからない。深い闇の奥から僕の体に繋がっている。僕を逃がさないようにしっかりと足首を掴んでいる。僕は歩く。鎖を引きずる。暗闇から少しだけ鎖が姿を現し、そして視界から消える。

僕は吐き気をもよおす。闇の中で、ときどきどうしようもない不安に駆られて後ろを振り返ることがある。そこには過去の僕の血と、過去の僕の細胞でできた鎖だけが見える。そこには過去の僕が過去のままでいるように見える。少しの間、ここで鎖を引いて歩く僕自身をそれに重ねてしまう。僕は吐き気をもよおす。いちばん手前の鎖が今の僕の血と細胞でできていることを思い出して、貧血を疑うけれど、あまりにも馬鹿馬鹿しいのですぐにやめる。

ときどき出会う人々の存在が、この空間がトンネルではないことを教えてくれる。彼らは自由にこの世界を歩き回り、おそらくは思い思いの生き方をしている。ぼくの近くを通る一瞬だけ、彼らの姿が見える。ほとんどの場合、言葉を交わすこともなくすれ違うだけだ。時間を気にしながら小走りの人、似合わない大きな荷物(たぶんプレゼントだろう)を抱えた人、派手なメイクをした人、いろんな人間が僕の近くを通り過ぎていく。彼らはほんの一瞬、僕にしか見えない暗闇の中を歩く僕に視線を送り、すぐにやめる。それは僕というよりは僕から伸びる長い長い鎖と、ときどきそこに浮かぶ過去の僕によく似た幻影を見ているように思える。そして視線を外したとき、彼らは少しだけ嘲笑を浮かべているように僕には見える。そういうとき、ぼくはまた貧血を疑うことになる。

とても少ない割合で、ぼくと同じような鎖を引きずっている人に出会う。彼らが彼ら自身の暗闇の中にいるのかどうかまではわからない(それは本質的に本人にしか見えない暗闇だからだ)が、鎖の音と匂い、そこに浮かぶ幻影ははっきりと見える。けれど多くの場合、その出会いは良くない結果を残すことになる――特に、相手の引きずる鎖が僕の鎖の一部分とよく似ている場合には。一部といっても、先端部分(遠くの側の端っこは闇に飲まれて見えないので、手前側のこと)によく似ているときはとても上手くやっていける。というよりも基本的にはそうでなければならない。そうでないとき、ぼくは相手の鎖に自分自身の過去の幻影を見てしまう。そして強烈な嘔吐感を得る(自分の汚物と他人の汚物はどちらも汚いけど、その間には決定的な差異があるのと同じだろう)。相手が僕の鎖を辿ってしまったら、同じ吐き気をもよおすことになる。ぼくらはお互いの暗闇の中に消える。鎖が少しずつ伸びる。

僕はこの鎖を断ち切りたいと思う。けれどそれが実行に移されることはない。僕はその重さや、幻影がもたらす嘔吐感、それがあることで傷つけあうことを受け入れ、重たい血と細胞の鎖を引きずりながら歩く。それは暗闇の中で、僕の進むべき方向を示してくれる唯一のものだ。

このアーカイブについて

このページには、2010年1月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2009年12月です。

次のアーカイブは2010年2月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.32-ja