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/