akishin999の日記

調べた事などを書いて行きます。

Ubuntu 12.10 へ mroonga をインストールする

Tritonn の後継で MySQL 5.1 以降で日本語全文検索を可能にする mroongaUbuntu 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: Ubuntumecab+groonga+mroongaをソースからインストール
http://watnab.blogspot.jp/2012/04/ubuntumecabgroongamroonga.html