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/