[groonga-dev,02724] Re: [ANN] Groonga 4.0.5

Back to archive index

Kouhei Sutou kou****@clear*****
2014年 8月 31日 (日) 19:48:14 JST


須藤です。

In <CAH9Y0y48qbmw1fQxiGeCjY9BP=d_mSg_akCLb****@mail*****>
  "[groonga-dev,02720] Re: [ANN] Groonga 4.0.5" on Sat, 30 Aug 2014 10:20:37 +0900,
  杉本涼 <sugry****@gmail*****> wrote:

> ↓が実行した結果です。
> tar: Record size = 16 blocks
> vendor/groonga/
> vendor/groonga/lib/
> vendor/groonga/lib/libgroonga.so
> vendor/groonga/lib/libgroonga.la
> vendor/groonga/lib/pkgconfig/
> vendor/groonga/lib/pkgconfig/groonga.pc
> vendor/groonga/lib/libgroonga.so.0
> vendor/groonga/lib/libgroonga.so.0.0.0
...
> 
> MessagePackのライブラリーが含まれていないと思うのですがどうですか?

はい、含まれていないですね。

少し整理しましょうか。

Heroku用GroongaがMessagePackに対応しているためには次の状態に
なっている必要があります。

  1. libgroonga.soがlibmsgpack.soをリンクしている
  2. tar.xzにlibgroonga.soもlibmsgpack.soも含まれている
  3. LD_LIBRARY_PATHのパスの中にlibgroonga.soもlibmsgpack.so
     も含まれている

ここまでが期待する状態(ゴール、目指すところ)です。

で、それぞれ次のように確認できます。

1.はlddを使うと確認できます。

  % ldd vendor/groonga/lib/libgroonga.so

この結果の中にlibmsgpack.soが含まれていればlibgroonga.soは
libmsgpack.soをリンクしています。

2.は今回やったようにtar xvfの結果などで確認できます。

3.もlddで確認できます。LD_LIBRARY_PATHに.soが含まれていない
と

  % ldd vendor/groonga/lib/libgroonga.so

の結果の中で、「not found」と言われます。

あるいは、実際にlibgroonga.soを使ったアプリケーションを実行し
てエラーにならないかを確認するという方法もあります。.soが見
つからないとlibgroonga.soを読み込もうとしたときにエラーにな
ります。


ここまでが期待する状態の確認方法(テスト方法)です。
これで期待する状態を確認できたらOK!ということですね。

たぶん、1.はすでに解決しているはずです。


なお、1.と2.はheroku-groonga-builderの範囲で、3.は
heroku-buildpack-groongaの範囲です。


で、2.と3.の実現方法案ですが、私は2つの方法があると思います。
(試していないので抜けがあるかもしれません。)

  a. MessagePackのconfigureの--prefixをGroongaと同じ
     (vendor/groonga)にする
  b.
    * tar cJfするときにmsgpack_prefixも指定してtar.xzに
      vendor/msgpack以下も含める
    * heroku-buildpack-groognaを変更してvendor/msgpack/lib/
      もLD_LIBRARY_PATHに加える

a.の方は変更点が少ないのが利点です。

b.の方はGroonga関連のファイルとMessagePack関連のファイルを分
けているのでそれぞれを別個に扱えるというのが利点です。


個人的にはどちらでもよいと思っています。作り手の意図次第でど
ちらを選んでもよいということですね。私は、a.で作られていたら、
作り手の意図は「MessagePackもGroonga(を動かすために必要なも
の)の一部と捉えている」と感じ、b.ならそうでないと感じます。


整理するとこんな感じな気がします。解決できそうでしょうか!?



-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/>

Groongaベースの全文検索システムを総合サポート:
  http://groonga.org/ja/support/
パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
  http://www.clear-code.com/recruitment/
コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ:
  http://www.clear-code.com/services/code-reader/




groonga-dev メーリングリストの案内
Back to archive index