[groonga-dev,01013] Re: mroongaのspecファイルの問題及び要望等

Back to archive index

Kouhei Sutou kou****@clear*****
2012年 8月 15日 (水) 17:44:00 JST


須藤です。

In <502A6****@wing-*****>
  "[groonga-dev,01009] mroongaのspecファイルの問題及び要望等" on Tue, 14 Aug 2012 23:40:08 +0900,
  WING☆ <wings****@wing-*****> wrote:

> たまたま形態素解析Mecabを触っていて自然な流れでmroongaに辿り着きました。
> 須藤様からはTwitterで声をかけて頂きましたが、mroongaに対して要望等が
> 出て参りましたので、MLに参加させて頂きまして、いろいろご報告したいと
> 思います。

ありがとうございます!

> ■ mysql-mroongaのsrpmに含まれるSPECファイルの問題
> 
> remiリポジトリなどで配布されているMySQL 5.5をインストールした状態で、
> 公開されているsrpmをリビルドすると、エラーで落ちます。
> 調べてみますと、remiリポジトリのmysql-libとmysql-develに含まれているもの
> が無いために落ちてしまうようです。
> また、ビルド時にmysql_configを使用することから、
> 
> %if %{use_system_mysql}
> BuildRequires:  mysql
> BuildRequires:  mysql-devel
> %endif
> ※ mysql-develを入れればmysql-libsも入ります。
> 
> とした方が良いように思います。

たしかにそうですね!
mysqlもmysql-develを入れれば自動で入るようなので

  BuildRequires: mysql-devel

だけ追加しました!

(Fedora用のspecも同じ問題があるなぁと思って見てみたら、こっ
ちはちゃんとBuildRequires: mysql-develが書いてありまし
た。。。)

> ■ remiリポジトリのMySQLをインストールするとmroongaがInstallできない。
> 
> mroongaに関してぐぐっていると、このような問題をよく目にします。
> 
> これは過去のMLにもありました
> http://sourceforge.jp/projects/groonga/lists/archive/dev/2011-October/000579.html
> の問題ではないかと推測しています。
> 
> RHEL 5系の標準ではMySQL 5.0系がインストールされますが、remiリポジトリ
> では依存関係を解決するためにmysqlclient15というパッケージを別途作成し、
> MySQL 5.5系をインストールしても依存問題が出ないように工夫されています。
> 
> 今回問題になったのは、このMySQL 5.0系が起因となっている可能性が高く、
> mysql_configで取得できるビルドオプションを無視する--disable-fast-mutexes
> を付けてビルドすると、問題無く動作することを確認できました。

あ、これは5.0系が原因ではないんですよ。
remiとかのMySQLのビルドの仕方が悪いんです。

mysql.specの中で

  cmake . -DBUILD_CONFIG=mysql_release \
          ...

としているところがありますよね。このオプションの中に

  -DCMAKE_BUILD_TYPE=RelWithDebInfo

というのを加えてください。
(Oracleが提供しているspecでは↑が入っています。)

これをつけないとfast mutexesという機能が有効になった状態でビ
ルドされないんです。でも、mysql_configにだけfast mutexes用の
ビルドフラグが残っているのでおかしなことになっています。

cmakeを実行すると
${MYSQL_SOURCE}/strings/CMakeFiles/strings.dir/flags.makeと
いうファイルができるのですが、この中に

  C_FLAGS = ...

という行があります。本当はこの中にmysql_configにでている

  -DMY_PTHREAD_FASTMUTEX=1

というのが入っていないといけません。そうしないと、MySQL自体
がfast mutexes機能付きでビルドされません。

remiのspecを使うと↑のflags.makeの中
に-DMY_PTHREAD_FASTMUTEX=1が入っていないはずです。

remiのspecを書き換えてcmakeのオプション
に-DCMAKE_BUILD_TYPE=RelWithDebInfoを入れる
と-DMY_PTHREAD_FASTMUTEX=1が入ることが確認できるはずです。

で、これはFedoraのspecでも同じです。
なので、

> これは過去のMLにもありました
> http://sourceforge.jp/projects/groonga/lists/archive/dev/2011-October/000579.html
> の問題ではないかと推測しています。

という問題が起こっていました。

もしよかったら、どなたか-DCMAKE_BUILD_TYPE=RelWithDebInfoを
入れてもらうようにremiの人にお願いしてもらえないでしょうか。


ただ、MySQLのCMakeList.txtには、CMAKE_BUILD_TYPEが指定されて
いなかったらRelWithDebInfoを指定されたように動くっぽく書かれ
ている(けど動かない)ので、MySQLの方を直すほうがよい気もしま
す。。。

> ■ srpmをリビルドする際の要望
> 
> el5、el6に共通することかと思いますが、srpmをリビルドする際MySQLのsrpm
> をwgetして展開し、MySQLのソースを利用してリビルドするようになっています
> が、これをmysql-develをインストールするだけでリビルドできるようになりま
> せんでしょうか?
> mroongaのソースコードを一切見てないのに偉そうなことを書いてみましたが…

そうですよね!できるようにしたいですよね!
でも、それができないんですよ。。。
mroongaはMySQLの中ではストレージエンジンというモジュールにあ
たるのですが、それをビルドするために必要なファイル(具体的に
はhandlerクラスの定義)がmysql-develには含まれていないのです。
そのため、ソースがないとビルドできないのです。。。


> ■ 密かな宣伝…
> 
> 私は
> http://wingse.blog57.fc2.com/
> をやっており、wingリポジトリというものを公開しています。
> (RHEL 5系のみ。近いうちに6系も公開します。)
> 
> こちらでは、既に動作確認を終えたmysql55-mroongaを公開しており、
> 簡単にmroongaがインストールできるようになっています。
> インストールの仕方は
> http://wingse.blog57.fc2.com/blog-entry-280.html
> に書かせていただきました。
> その他にも、いろいろなパッケージの最新版を作成しておりますので、
> 興味のある方は是非ご覧下さい。
> 少しでも幸せな人が増えることを祈って…

今のところmroonga開発チームが提供する公式RPMとして、CentOS 6
+ MySQL 5.5用のRPMを提供する予定はないので、6系も公開されたら、
CentOS 6 + MySQL 5.5で使いたい人はwingリポジトリを使ってもら
う方がよいかもしれませんね!

> 以上、長文ではございますが、ご報告させて頂きました。
> 少しでもお役に立てられればと思っております。

ありがとうございます!

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

groongaサポート:
  http://groonga.org/ja/support/
プログラミングが好きなソフトウェア開発者を募集中:
  http://www.clear-code.com/recruitment/




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