Ubuntu 12.10 へ mroonga をインストールする
Tritonn の後継で MySQL 5.1 以降で日本語全文検索を可能にする mroonga を Ubuntu 12.10 にインストールした際のメモです。
MySQL 5.5 のインストール
まずは MySQL 本体をインストールします。
ここでは apt から以下をインストールしました。
% sudo apt-get install -y mysql-client-5.5 mysql-server-5.5 libmysqlclient-dev mysql-source-5.5
ソースコードは展開しておきます。
% cd /usr/src/mysql % sudo tar xzf mysql-source-5.5.tar.gz
インストール準備
手元の環境では公式サイトのインストール手順だとエラーになってしまい、上手く行かなかったので、結局ソースコードからビルドしてインストールしました。
ソースコードからインストールしたソフトウェアを管理するためにまずは Paco をインストールします。
% sudo apt-get install -y paco
また、g++ なども必要になるので入っていない場合はインストールしておきます。
% sudo apt-get install -y g++
デフォルトのままだと AppArmor のせいでソースコードからビルドした Mroonga プラグインを MySQL が読めないようなので、MySQL の AppArmor を学習モードにしておきます。
% sudo apt-get install -y apparmor-profiles apparmor-utils % sudo aa-complain mysqld Setting /etc/apparmor.d/usr.sbin.mysqld to complain mode.
mecab のインストール
% cd /usr/local/src % sudo wget http://mecab.googlecode.com/files/mecab-0.994.tar.gz % sudo tar xzf mecab-0.994.tar.gz % cd mecab-0.994 % ./configure --enable-shared --with-pic --with-charset=utf8 % make && make check && sudo paco -D make install
共有ライブラリをシステムに認識させます。
% sudo ldconfig % ldconfig -p | grep libmecab libmecab.so.2 (libc6) => /usr/local/lib/libmecab.so.2 libmecab.so (libc6) => /usr/local/lib/libmecab.so
ipadic のインストール
% cd /usr/local/src % sudo wget http://jaist.dl.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz % sudo tar xzf mecab-ipadic-2.7.0-20070801.tar.gz % cd mecab-ipadic-2.7.0-20070801 % ./configure --with-pic --with-charset=utf8 % make && sudo paco -D make install
mecab、ipadic が正常にインストールされたか確認します。
% mecab -D filename: /usr/local/lib/mecab/dic/ipadic/sys.dic version: 102 charset: utf8 type: 0 size: 392126 left size: 1316 right size: 1316
groonga のインストール
% cd /usr/local/src % sudo wget http://packages.groonga.org/source/groonga/groonga-2.0.8.tar.gz % sudo tar xzf groonga-2.0.8.tar.gz % cd groonga-2.0.8 % ./configure % make && make check % sudo paco -D make install
groonga の make には結構時間がかかります。
止まっているようにも見えますが、待っていればそのうち終わるはずです。
終わったら共有ライブラリをシステムに認識させます。
% sudo ldconfig % ldconfig -p | grep libgroonga libgroonga.so.0 (libc6) => /usr/local/lib/libgroonga.so.0 libgroonga.so (libc6) => /usr/local/lib/libgroonga.so
mroonga のインストール
% cd /usr/local/src % sudo wget https://github.com/downloads/mroonga/mroonga/mroonga-2.08.tar.gz % sudo tar xzf mroonga-2.08.tar.gz % cd mroonga-2.08 % ./configure \ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig \ --with-mysql-source=/usr/src/mysql/mysql-5.5 \ --with-mysql-config=/usr/bin/mysql_config \ --with-default-parser=TokenMecab % make % sudo paco -D make install
インストールしたソフトウェアが paco で管理されていることを確認します。
% paco -a groonga-2.0.8 mecab-0.994 mecab-ipadic-2.7.0-20070801 mroonga-2.08
mroonga エンジンの有効化
root ユーザで MySQL に接続します。
% mysql -uroot -p
以下を実行して mroonga ストレージエンジンをインストールします。
mysql> INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';
show engines を実行し、mroonga ストレージエンジンが利用可能となったことを確認します。
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | mroonga | YES | CJK-ready fulltext search, column store | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 10 rows in set (0.00 sec)
最後に last_insert_grn_id 関数を登録しておきます。
mysql> CREATE FUNCTION last_insert_grn_id RETURNS INTEGER soname 'ha_mroonga.so';
以上で MySQL 5.5 で mroonga ストレージエンジンが使用できるようになりました。
しばらく動作させ、一通り動作を学習させたら AppArmor を enforce モードに戻しておきます。
% sudo aa-enforce mysqld Setting /etc/apparmor.d/usr.sbin.mysqld to enforce mode.
参考
Slow Starter Blog: Ubuntuにmecab+groonga+mroongaをソースからインストール
http://watnab.blogspot.jp/2012/04/ubuntumecabgroongamroonga.html