2.9. その他 — Mroonga vmrn_version documentation

本文へスキップ
`Ctrl`+`K`

# 2.9. その他

このセクションではUNIX系の環境でMroongaをソースコードからインストールする方法を説明します。

## 2.9.1. 依存関係

MroongaをビルドするためにはいくつかのツールとライブラリーとMySQLが必要です。MySQLの代わりにMariaDBを使うこともできます。

### 2.9.1.1. ツール

必須のツール

- `wget`、`curl` または Web ブラウザ（ソースアーカイブをダウンロードするため）

- `tar` と `gzip`（ソースアーカイブを展開するため）

- シェル（ `dash` 、 `bash` 、 `zsh` など、どのようなシェルでもたぶん大丈夫）

- CコンパイラーとC++コンパイラー （ `gcc` と `g++` がサポート対象だが、他のコンパイラーでもたぶん大丈夫）

- CMake（クロスプラットフォームのビルドシステムとして利用するため）

- Ninja（高速にビルドするため）

- pkg-config（ライブラリを検出するため）

これらを用意してください。

あるとよいツール

- `sudo`（ビルドしたGroongaをインストールするため）

### 2.9.1.2. ライブラリー

必須のライブラリー

- Groonga

  - もしパッケージを使うなら、開発用パッケージをインストールしてください。debなら `libgroonga-dev` で、RPMなら `groonga-devel` です

- groonga-normalizer-mysql

あるとよいライブラリー

- MeCab: 日本語形態素解析器

注釈

形態素単位でトークナイズした全文検索索引を使用したい場合は、Groongaのインストール前に MeCabをインストールしてください。

### 2.9.1.3. MySQL

Mroongaはインストール済みのMySQLだけでなくMySQLのソースとビルドディレクトリーも必要です。そのため、MySQLのパッケージを使うことはできません。MySQLのパッケージはMySQLのソースとビルドディレクトリーを提供していないからです。MySQLのソースとビルドディレクトリーが必要です！

MySQLの代わりにMariaDBを使う場合でもMariaDBのソースが必要です。

MySQL 8.4最新版のソースコードをダウンロードし、ビルド＆インストールして下さい。

こちらのDownload MySQL Community Server を参照して下さい。

mysql-8.4.1を使用し、以下にソースディレクトリが展開されているものと仮定します。

    ${HOME}/local/src/mysql-8.4.1

次のディレクトリーでビルドします。

    ${HOME}/local/build/mysql-8.4.1

次のコマンドラインはMySQLをビルド・インストールするコマンドラインです。

    $ cmake \
        -S ${HOME}/local/src/mysql-8.4.1 \
        -B ${HOME}/local/build/mysql-8.4.1 \
        -GNinja \
        -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_INSTALL_PREFIX=${HOME}/local
    $ cmake --build ${HOME}/local/build/mysql-8.4.1
    $ cmake --install ${HOME}/local/build/mysql-8.4.1

Mroongaをインストールする前にMySQLを起動する必要があります。なぜならMroongaを登録するためにいくつかのSQL文を実行する必要があるからです。

### 2.9.1.4. MariaDB

MySQLの代わりにMariaDBを使うことができます。

MariaDBをビルドする前に`storage/mroonga/`（MariDBにバンドルされているMroonga）を削除しなければいけないことに注意してください。

    $ mkdir -p ${HOME}/local/src
    $ cd ${HOME}/local/src
    $ wget https://downloads.mariadb.org/rest-api/mariadb/11.4.3/mariadb-11.4.3.tar.gz
    $ tar xf mariadb-11.4.3.tar.gz
    $ rm -rf mariadb-11.4.3/storage/mroonga
    $ cd -
    $ cmake \
        -S ${HOME}/local/src/mariadb-11.4.3 \
        -B ${HOME}/local/build/mariadb-11.4.3 \
        -GNinja \
        -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_INSTALL_PREFIX=${HOME}/local
    $ cmake --build ${HOME}/local/build/mariadb-11.4.3
    $ cmake --install ${HOME}/local/build/mariadb-11.4.3

## 2.9.2. ソースからビルド

MroongaはCMakeを使っています。以下は一番簡単なビルド手順です。

    $ cd ${HOME}/local/src
    $ wget https://packages.groonga.org/source/mroonga/mroonga-latest.tar.gz
    $ tar xvf mroonga-latest.tar.gz
    $ mroonga_base_name=$(find mroonga-* -maxdepth 0 -type d)
    $ cmake \
        -S ${HOME}/local/src/${mroonga_base_name} \
        -B ${HOME}/local/build/${mroonga_base_name} \
        -GNinja \
        -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_INSTALL_PREFIX=${HOME}/local \
        -DMYSQL_BUILD_DIR=${HOME}/local/build/mysql-8.4.1 \
        -DMYSQL_CONFIG=${HOME}/local/bin/mysql_config \
        -DMYSQL_SOURCE_DIR=${HOME}/local/src/mysql-8.4.1
    $ cmake --build ${HOME}/local/build/${mroonga_base_name}
    $ cmake --install ${HOME}/local/build/${mroonga_base_name}
    $ ${HOME}/local/bin/mysql -u root < ${HOME}/local/share/mroonga/install.sql

次のことを `cmake` で指定しなければいけません。

- `-DMYSQL_BUILD_DIR`: MySQLのビルドディレクトリー

- `-DMYSQL_CONFIG`: `mysql_config`コマンドのパス

- `-DMYSQL_SOURCE_DIR`: MySQLのソースディレクトリー

`SHOW ENGINES` SQLを実行することでMroongaが正常にインストールされているかを確認できます。 `Mroonga` という行があればMroongaは正常にインストールされています。

    mysql> SHOW ENGINES;
    +------------+---------+------------------------------------------------------------+--------------+------+------------+
    | Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints |
    +------------+---------+------------------------------------------------------------+--------------+------+------------+
    | Mroonga    | YES     | Fulltext search, column base                               | NO           | NO   | NO         |
    | MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
    | CSV        | YES     | CSV storage engine                                         | NO           | NO   | NO         |
    | MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |
    | InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
    | MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
    +------------+---------+------------------------------------------------------------+--------------+------+------------+
    6 rows in set (0.00 sec)

以下、それぞれの手順の詳細を説明します。

### 2.9.2.1. `cmake`

まず `cmake` を実行します。重要な `cmake` の引数は以下の通りです。

#### 2.9.2.1.1. `-DMYSQL_SOURCE_DIR=PATH`

MySQLのソースコードがあるディレクトリーを指定します。

これは必須の引数です。

#### 2.9.2.1.2. `-DMYSQL_BUILD_DIR=PATH`

MySQLのソースコードをビルドしたディレクトリーを指定します。

MySQLのソースコードがあるディレクトリーでビルドした場合はこの引数を指定する必要はありません。他のディレクトリーでビルドしたときはこの引数を指定する必要があります。

#### 2.9.2.1.3. `-DMYSQL_CONFIG=PATH`

`mysql_config` コマンドのパスを指定します。

`mysql_config` コマンドが `PATH` から探索可能であればこの引数を指定する必要はありません。例えば、 `mysql_config` が `/usr/bin/mysql_config` にある場合はこの引数を指定する必要はありません。

#### 2.9.2.1.4. `-DMRN_DEFAULT_TOKENIZER=TOKENIZER`

全文検索用のデフォルトのトークナイザーを指定します。この値は`my.cnf`でもカスタマイズできます。

デフォルト値は `TokenBigram` です。

デフォルトのトークナイザーとして `TokenMecab` を使う例です。

    $ cmake ... -DMRN_DEFAULT_TOKENIZER=TokenMecab

#### 2.9.2.1.5. `-DCMAKE_BUILD_TYPE={Release,Debug,RelWithDebInfo}`

ビルドタイプを指定します。

本番環境でこのMroongaを使う場合は`-DCAMKE_BUILD_TYPE=Release`または`-DCAMKE_BUILD_TYPE=RelWithDebInfo`を指定するべきです。最適化が有効になります。

開発用にこのMroongaを使う場合は`-DCAMKE_BUILD_TYPE=Debug`を使うべきです。最適化が無効になり、デバッグシンボルが有効になります。これらは開発時に有用です。

#### 2.9.2.1.6. `-DCMAKE_INSTALL_PREFIX=PREFIX`

インストール先となるディレクトリを指定します。Mroonga関連のファイルは `ha_mroonga.so` を除いて `${PREFIX}/` ディレクトリ以下にインストールされます。 `ha_mroonga.so` はMySQLのプラグインファイルです。これはMySQLのプラグインディレクトリーにインストールされます。

デフォルトは `/usr/local` です。この場合、Mroongaをインストールするために使う `install.sql` は `/usr/local/share/mroonga/install.sql` にインストールされます。

### 2.9.2.2. `cmake --build`

`cmake` が成功したら `cmake --build` でMroongaをビルドします。

`cmake --build` で何かエラーが発生した場合は、そのエラーをレポートしてください: 見つけたバグを報告するには

### 2.9.2.3. `cmake --install`

これでビルドしたMroongaをインストールできます！

`${PREFIX}`とMySQLのプラグインディレクトリーへの書き込み権限がない場合は、`sudo`を使わないといけません。

    $ sudo cmake --install ${HOME}/local/build/${mroonga_base_name}

### 2.9.2.4. `mysql -u root < install.sql`

MroongaをMySQLに登録するために `INSTALL PLUGIN` や `CREATE FUNCTION` といったSQL文を実行する必要があります。これらのSQLは `${PREFIX}/share/mroonga/install.sql` に書かれています。

### 2.9.2.5. Mroongaのアンインストール

Mroongaをアンインストールしたい場合は次のコマンドラインを使ってください。

    $ ${HOME}/local/bin/mysql -u root < ${PREFIX}/share/mroonga/uninstall.sql
    $ xargs rm < ${HOME}/local/build/mroonga/install_manifest.txt