`Ctrl`+`K`

# 2.11. その他

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

インストール にある特定環境用のドキュメントに、その環境向けのより詳細な情報があります。特定環境用のドキュメントがある場合は、まずそちらを参照してください。

## 2.11.1. 依存関係

Groongaは特別なライブラリを必要としませんが、いくつかビルドに必要なツールがあります。

### 2.11.1.1. ツール

以下が必要なツールです:

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

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

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

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

> - `make` （GNU makeがサポート対象だが、BSD makeなど他のmakeでもたぶん大丈夫）

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

シェルの代わりに CMake を使うこともできますが、このドキュメントではCMakeを使ってビルドする方法については説明しません。

以下はあるとよいツールです:

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

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

追加のライブラリを使いたい場合はこれらのツールを用意しておかなければいけません。

### 2.11.1.2. ライブラリ

どのライブラリも必須ではありません。以下はオプションとして使えるライブラリです:

> - MeCab （全文検索対象のドキュメントを形態素解析でトークナイズするため）

> - KyTea （全文検索対象のドキュメントを形態素解析でトークナイズするため）

> - ZeroMQ （ サジェスト 用）

> - libevent （ サジェスト 用）

> - MessagePack （MessagePack出力サポート用および サジェスト 用）

> - libedit （ groonga 実行ファイル のコマンドライン編集用）

> - zlib （カラム値の圧縮用）

> - LZ4 （カラム値の圧縮用）

> - Zstandard （カラム値の圧縮用）

これらのライブラリを使いたい場合は、Groongaをインストールする前にライブラリをインストールしてください。

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

GroongaはGNUビルドシステムを使っています。以下は一番簡単なビルド手順です:

    % wget https://packages.groonga.org/source/groonga/groonga-12.0.8.tar.gz
    % tar xvzf groonga-12.0.8.tar.gz
    % cd groonga-12.0.8
    % ./configure
    % make
    % sudo make install

上記の手順を実行すると `/usr/local/bin/groonga` に groonga 実行ファイル がインストールされます。

デフォルトのビルドでもうまく動くでしょうが、 `configure` のときにGroongaをカスタマイズすることができます。

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

### 2.11.2.1. `configure`

まず `configure` を実行します。重要な `configure` のオプションは以下の通りです:

#### 2.11.2.1.1. `--prefix=PATH`

インストール先となるディレクトリを指定します。Groonga関連のファイルは `${PATH}/` ディレクトリ以下にインストールされます。

デフォルトは `/usr/local` 。デフォルトの場合は groonga 実行ファイル は `/usr/local/bin/groonga` にインストールされます。

以下はシステム全体にGroongaをインストールするのではなく、ユーザーが個人で使う目的で `~/local` にインストールする例です:

    % ./configure --prefix=$HOME/local

#### 2.11.2.1.2. `--localstatedir=PATH`

ログファイル、PIDファイル、データベースなど頻繁に変更されるファイルを置くディレクトリを指定します。たとえば、ログファイルは `${PATH}/log/groonga.log` に置かれます。

デフォルトは `/usr/local/var` です。

以下は頻繁に変更されるファイルをシステム全体で使う領域である `/var` に置く例です:

    % ./configure --localstatedir=/var

#### 2.11.2.1.3. `--with-log-path=PATH`

ログファイルのデフォルトのパスを指定します。ログファイルのデフォルトのパスは groonga 実行ファイル の `--log-path` コマンドラインオプションで変更できます。そのため、このオプションはそんなに重要なビルドオプションではありません。少し便利にするためのオプションです。

デフォルトは `/usr/local/var/log/groonga.log` です。 `/usr/local/var` の部分は `--localstatedir` オプションで変更できます。

以下はログファイルを共有しているNFSディレクトリ `/nfs/log/groonga.log` に置く例です:

    % ./configure --with-log-path=/nfs/log/groonga.log

#### 2.11.2.1.4. `--with-default-encoding=ENCODING`

デフォルトのエンコーディングを指定します。有効なエンコーディングは `euc_jp` 、 `sjis` 、 `utf8` 、 `latin1` 、 `koi8r` 、 `none` です。

デフォルトは `utf8` です。

以下はデフォルトのエンコーディングとしてShift_JISを使う例です:

    % ./configure --with-default-encoding=sjis

#### 2.11.2.1.5. `--with-match-escalation-threshold=NUMBER`

マッチ演算でエスカレーションをするかどうかのデフォルトの閾値を指定します。この閾値については match_escalation_threshold を参照してください。-1はマッチ演算でエスカレーションしないという意味です。

デフォルトは0です。

以下はデフォルトではマッチエスカレーションをしないという例です:

    % ./configure --with-match-escalation-threshold=-1

#### 2.11.2.1.6. `--with-zlib`

zlibを使ってカラム値を圧縮する機能を有効にします。

デフォルトでは無効です。

以下はzlibを使ってカラム値を圧縮する機能を有効にする例です:

    % ./configure --with-zlib

#### 2.11.2.1.7. `--with-lz4`

LZ4を使ってカラム値を圧縮する機能を有効にします。

デフォルトでは無効です。

以下はLZ4を使ってカラム値を圧縮する機能を有効にする例です:

    % ./configure --with-lz4

#### 2.11.2.1.8. `--with-message-pack=MESSAGE_PACK_INSTALL_PREFIX`

MessagePackがどこにインストールされているかを指定します。MessagePackを `--prefix=/usr` という `configure` オプションでインストールしていない場合は、MessagePackをビルドするときに指定したパスをこのオプションで指定してください。

もし、MessagePackを `--prefix=$HOME/local` という `configure` オプションでインストールした場合は、Groongaの `configure` では `--with-message-pack=$HOME/local` と指定してください。

デフォルトは `/usr` です。

以下はMessagePackが `--prefix=$HOME/local` という `configure` オプションでインストールされている場合の例です:

    % ./configure --with-message-pack=$HOME/local

#### 2.11.2.1.9. `--with-munin-plugins`

Groonga用のMuninプラグインをインストールします。プラグインは `${PREFIX}/share/groonga/munin/plugins/` 以下にインストールされます。

デフォルトではプラグインはインストールされません。

以下はGroonga用のMuninプラグインをインストールする例です:

    % ./configure --with-munin-plugins

#### 2.11.2.1.10. `--with-package-platform=PLATFORM`

initスクリプトなどプラットフォーム依存のシステム管理ファイルをインストールします。利用可能なプラットフォームは `centos` 、 `centos5` 、 `centos6` 、 `centos7` 、 `fedora` です。 `centos` から始まるプラットフォームはRed HatおよびCentOSなどのRed Hatクローンのディストリビューション用です。 `centos` を指定した場合はディストリビューションのバージョンを推測します。 `fedora` はFedora用です。

デフォルトではシステム管理ファイルはインストールされません。

以下はCentOS用のシステム管理ファイルをインストールする例です:

    % ./configure --with-package-platform=centos

#### 2.11.2.1.11. `--help`

すべての `configure` オプションを表示します。

#### 2.11.2.1.12. `--enable-apache-arrow` および `--disable-apache-arrow`

Apache Arrowのサポートを有効化または無効化します。

Apache Arrowサポートを有効化すると、Apache ArrowのIPC streaming formatが使えるだけでなく、 n_workers や query_parallel_or でマルチスレッドで処理できるようになります。

`--enable-apache-arrow` と `--disable-apache-arrow` のどちらも指定しない場合、Apache Arrowがシステムにインストールされていれば有効化し、そうでなければ無効化します。このデフォルト動作は `--enable-apache-arrow=auto` を指定した場合と同じです。

`--enable-apache-arrow` を明示的に指定する場合, 事前にシステムにApache Arrowをインストールする必要があります。

Apache Arrowは 公式のドキュメントの手順 にしたがってインストールしてください。Debian系のシステムでは `libarrow-dev` が、Red Hat Enterprise Linux系のシステムでは `arrow-devel` が必要です。

`--disable-apache-arrow` を明示的に指定すると、システムにApache Arrowがインストールされていても、Apache Arrowサポートを無効化します。

以下は明示的にApache Arrowサポートを有効にする例です。

    % ./configure --enable-apache-arrow

注釈

Apache Arrowを標準でないディレクトリにインストールしている場合、 PKG_CONFIG_PATH=PATHS オプションを指定してください。

#### 2.11.2.1.13. `PKG_CONFIG_PATH=PATHS`

pkg-configの.pcファイルの検索パスを追加します。

`:` で区切ることで複数のパスを指定することができます。

Groongaは外部ライブラリの検出に `pkg-config` を使用しています。

`pkg-config` は `.pc` ファイルを用意するだけで、ライブラリを利用する際に必要となる各種フラグやパスなどを設定してくれるツールです。

パッケージ管理システムを使用してインストールしたライブラリを使いたい場合は、 `pkg-config` のデフォルトの検索パスに `.pc` ファイルが存在するためこのパラメータを指定する必要はありません。

自身でビルドしたライブラリを使用したい場合などに、このパラメータにそのライブラリの `.pc` ファイルの場所を指定します。

環境変数 `PKG_CONFIG_PATH` を使用することも出来ますが、以下の理由から `configure` のパラメータを使用することを推奨します。

GNU Autotools によって `configure.ac` から `configure` が生成されます。そして、 `make` の実行時、 `configure.ac` が変わっていることを検知すると、自動で `configure` を再生成し再実行します。 `configure` のパラメータとして指定すると、この `configure` の再実行時に `PKG_CONFIG_PATH` が自動で指定されます。 一方、環境変数を使用した場合は `PKG_CONFIG_PATH` は自動で指定されません。

以下は `/tmp/local/lib/pkgconfig/arrow.pc` の `.pc` ファイルを指定する例です。

    % ./configure PKG_CONFIG_PATH=/tmp/local/lib/pkgconfig/

### 2.11.2.2. `make`

`configure` が成功したら `make` でGroongaをビルドします:

    % make

マルチコアCPUを使っている場合は `-j` オプションを使うとより速くmakeを実行できます。もし、4コアのCPUを使っている場合は、 `-j4` オプションを使うともっと速くビルドできます:

    % make -j4

`make` で何かエラーが発生した場合は、そのエラーをレポートしてください: バグレポートの送り方

### 2.11.2.3. `make install`

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

    % sudo make install

`${PREFIX}` への書き込み権限がある場合は `sudo` を使う必要はありません。例えば、 `--prefix=$HOME/local` と指定した場合です。この場合は `make install` を使ってください:

    % make install