MariaDB + mroongaで全文検索を実現する環境をdebパッケージで管理するには

> もっとgroongaを知ってもらおう!ということで週刊groongaをはじめました。毎週木曜にgroongaやmroonga、rroongaのトピックを投稿予定です。

[gihyo.jp](http://gihyo.jp/)さんでgroongaの隔週更新連載が始まっています。第8回の記事も公開されたので、一読をおすすめします。

* [「第8回　CentOS6でのRPMパッケージを用いた MySQL 5.6 & mroonga & PHP 5.4 環境の作り方」](http://gihyo.jp/dev/clip/01/groonga/0008)

第1回から第7回までの過去記事については、[隔週連載groonga](http://gihyo.jp/dev/clip/01/groonga)のページを参照してください。

# はじめに

MySQLで高速に全文検索するためのオープンソースのストレージエンジンとして[mroonga](http://mroonga.org/ja/) (むるんが)を公開しています。
最新のバージョンは2013年7月29日にリリースした[3.06](http://mroonga.org/ja/docs/news.html#release-3-06-2013-7-29)です。

Fedora 19ではMariaDBを採用したことが話題になりましたが、Debian/Ubuntuでは依然としてMySQLが標準として使われています。MariaDBに切り替えたいけど、mroongaのパッケージがないのでちょっとためらっているという人がいるかも知れません。今回は、UbuntuでMariaDBに対応したmroongaをパッケージでインストールする方法を紹介します。

# MariaDBのインストール

まずは、MariaDBをインストールしてしまいましょう。MariaDB自体は公式サイトからパッケージをインストールできるようになっています。[Installing MariaDB .deb Files](https://kb.askmonty.org/en/installing-mariadb-deb-files/)としてインストール方法が紹介されています。

[Setting up MariaDB Repositories](https://downloads.mariadb.org/mariadb/repositories/)にアクセスするとUbuntuに限らず、ウィザード形式で環境に応じた手順が表示されるようになっています。

* ``1. Choose a Distro`` で ``Ubuntu`` を選択する
* ``2. Choose a Release`` で ``13.04 "raring"`` を選択する
* ``3. Choose a Version`` で ``10.0`` を選択する
* ``4. Choose a Mirror`` で ``山形大学`` を選択する

上記でUbuntu 13.04で10.0をインストールするときの手順を参照することができます。


次に以下のコマンドを実行します。

```sh
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.0/ubuntu raring main'
```

リポジトリを登録することができたら、あとはいつものようにaptを使ってMariaDBをインストールします。

```sh
sudo apt-get update
sudo apt-get install mariadb-server
```

# MariaDBのソースアーカイブを準備する

mroongaはビルドしたときのMySQLのバージョンに強く依存しているので、MariaDBに切り替えるなら、同じようにMariaDBのソースアーカイブが必要です。
任意のディレクトリへとアーカイブを展開し、事前にmysql_configスクリプトが実行できるようにしておきます。

```zsh
% tar xf mariadb-10.0.3.tar.gz
% cd mariadb-10.0.3
% cmake -G "Unix Makefiles" .
```

# mroongaのパッケージのビルド

MariaDBのアーカイブの準備ができたので、今度はmroongaのパッケージをビルドします。

mroongaのソースアーカイブをダウンロード展開した後、パッケージをビルドするのに必要なファイル一式をまとめたmariadb-mroonga-debian.tar.gzもあわせてダウンロード、展開します。

```zsh
% wget http://packages.groonga.org/source/mroonga/mroonga-3.06.tar.gz
% tar xf mroonga-3.06.tar.gz
% cd mroonga-3.06
% wget http://packages.groonga.org/tmp/mariadb-mroonga-debian.tar.gz
% tar xf mariadb-mroonga-debian.tar.gz
```

次に、mroonga-3.06/debian/rulesファイルを環境に合わせて変更します。MariaDBのソースアーカイブを展開したディレクトリをご自分の環境に合わせて変更してください。

```
override_dh_auto_configure:
         dh_auto_configure -- --with-mysql-source=$$HOME/work/mariadb/mariadb-10.0.3
```
 
最後にパッケージをビルドします。

```zsh
% debuild -uc -us
```

パッケージのビルドに成功すると、debファイルが作成されているはずです。

```zsh
% ls ..
mariadb-server-mroonga-doc_3.06-1_all.deb
mariadb-server-mroonga_3.06-1_amd64.deb
```

# mroongaをインストールする

次に、mroongaパッケージをインストールします。

```zsh
% sudo dpkg -i ../mariadb-server-mroonga_3.06-1_amd64.deb
```

インストールできたか確認してみましょう。

```zsh
% mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 47
Server version: 10.0.3-MariaDB-1~raring-log mariadb.org binary distribution

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| SPHINX             | YES     | Sphinx storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| mroonga            | YES     | CJK-ready fulltext search, column store                        | NO           | NO   | NO         |
| FEDERATED          | YES     | FederatedX pluggable storage engine                            | YES          | NO   | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| Aria               | YES     | Crash-safe tables with MyISAM heritage                         | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
12 rows in set (0.00 sec)
```

mroongaがストレージエンジンとして認識されていることがわかります。

# まとめ

今回は、UbuntuでMariaDBに対応したmroongaをパッケージでインストールする方法について紹介してみました。

mroongaの基本的な動作を知るための[ユーザガイド](http://mroonga.org/ja/docs/userguide.html)もあります。インストールしたら試してみてください。