groonga(ぐるんが) への道(その1)2009/07/30

groonga(ぐるんが)は、未来検索ブラジルによるSennaの後継プロジェクトです。 2月20日にテストリリースされていたそうです。

SennaはMySQLの再ビルドなどの敷居が高くて、個人的には検証実験だけして終わっていましたが、 ぐるんがではプロジェクト内にデータストア機能も取り込んでいるので、単体での利用も可能なようです。

リリースノート?

Rubyバインディング - ラングバプロジェクト

Cygwinでコンパイルしてみる

Linux以外未テストと明記してある訳ですが、今手元にあった一番手軽な環境でテストしてみようかと……。

tar ballを取って来る。

configure ……通った。結構行けそう?

make ……開始した瞬間エラー終了 orz

どうも、ヘッダの宣言とソースの実装で引数の型があっていないようです。

groonga-0.1.0/lib/io.h:105-106

grn_io *grn_io_create(grn_ctx *ctx, const char *path, uint32_t header_size, uint32_t segment_size,
     uint32_t max_segment, grn_io_mode mode, unsigned int flags);
groonga-0.1.0/lib/io.c:135-137

grn_io *
grn_io_create_tmp(uint32_t header_size, uint32_t segment_size,
                  uint32_t max_segment, grn_io_mode mode, uint32_t flags)

flagsがプロトタイプ宣言では uint32_t, 関数定義では unsigned int になってます。

GCCがver.4系なら通るっぽいですね。(CygwinのデフォルトのGCCは3.4.4、4系も別にパッケージがある) でも、GCC4のインストールが面倒臭かったので、適当にパッチをあてながら進行。

MSG_WAITALL シンボルが未定義……。

先のuint32_tとunsigned intの不一致は沢山あるし、耐えられなくなってきた……。

VMWare上の Ubuntu8.04

groongaのビルドは問題なく成功。

Rubyバインディングをインストールしようとして、拾ってきたばかりのVMイメージにはRubyがインストールされていないことに気付く。 というか、

$ sudo gem install groonga

プログラム 'gem' はまだインストールされていません。  次のように入力することでインストールできます:
sudo apt-get install rubygems
bash: gem: command not found

apt-getの案内までしてくれるとは気が利いてるね。

というところで、折角なので(普段ならrubygems自体はtar ballからインストールするのですが……)

$ sudo apt-get install rubygems

してみました。

ruby1.8やirb1.8等の依存パッケージと共にrubygemsのパッケージがインストールされたので、改めて

$ sudo gem install groonga

Bulk updating Gem source index for: http://gems.rubyforge.org
ERROR:  While executing gem ... (Gem::GemNotFoundException)
    Could not find groonga (> 0) in any repository

……!? なんか、'Bulk updating Gem source index'の処理時間がやたら長かったりしたので、嫌なものを感じながら

$ gem --version
0.9.4

まあ、仕方ないかと、ここで反射的に

$ sudo gem update --system

特にエラーは無く終了したのですが、

$ gem --version
0.9.4

……!?

以下次号

次回予告

おもむろに

$ sudo apt-get remove rubygems

を実行? その顛末は?

ruby1.8 と ruby は別のパッケージ、だと?

mkmf が見付からない? そんな時はauto-apt searchで……。

まあ、そんな感じで。なんか疲れたので今日はここまで。

確かRubyの公式環境はDebianだった気がするのですが、Ruby(とrubygemsまわり)はaptに任せないで 自分でビルドした方が良いのですかねえ……。