groonga(ぐるんが) への道(その1) ― 2009/07/30
groonga(ぐるんが)は、未来検索ブラジルによるSennaの後継プロジェクトです。 2月20日にテストリリースされていたそうです。
SennaはMySQLの再ビルドなどの敷居が高くて、個人的には検証実験だけして終わっていましたが、 ぐるんがではプロジェクト内にデータストア機能も取り込んでいるので、単体での利用も可能なようです。
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に任せないで 自分でビルドした方が良いのですかねえ……。
最近のコメント