2.8. Others

This section describes how to install Groonga from source on UNIX like environment.

To get more detail about installing Groonga from source on the specific environment, find the document for the specific environment from Install.

2.8.1. Dependencies

Groonga doesn't require any special libraries but requires some tools for build.

2.8.1.1. Tools

Here are required tools:

  • wget, curl or Web browser for downloading source archive
  • tar and gzip for extracting source archive
  • shell (many shells such as dash, bash and zsh will work)
  • C compiler and C++ compiler (gcc and g++ are supported but other compilers may work)
  • make (GNU make is supported but other make like BSD make will work)

You must get them ready.

You can use CMake instead of shell but this document doesn't describe about building with CMake.

Here are optional tools:

  • pkg-config for detecting libraries
  • sudo for installing built groonga

You must get them ready if you want to use optional libraries.

2.8.1.2. Libraries

All libraries are optional. Here are optional libraries:

If you want to use those all or some libraries, you need to install them before installing Groonga.

2.8.2. Build from source

Groonga uses GNU build system. So the following is the simplest build steps:

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

After the above steps, groonga command is found in /usr/local/bin/groonga.

The default build will work well but you can customize groonga at configure step.

The following describes details about each step.

2.8.2.1. configure

First, you need to run configure. Here are important configure options:

2.8.2.1.1. --prefix=PATH

Specifies the install base directory. Groonga related files are installed under ${PATH}/ directory.

The default is /usr/local. In this case, groonga command is installed into /usr/local/bin/groonga.

Here is an example that installs Groonga into ~/local for an user use instead of system wide use:

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

2.8.2.1.2. --localstatedir=PATH

Specifies the base directory to place modifiable file such as log file, PID file and database files. For example, log file is placed at ${PATH}/log/groonga.log.

The default is /usr/local/var.

Here is an example that system wide /var is used for modifiable files:

% ./configure --localstatedir=/var

2.8.2.1.3. --with-log-path=PATH

Specifies the default log file path. You can override the default log path is groonga command command's --log-path command line option. So this option is not critical build option. It's just for convenient.

The default is /usr/local/var/log/groonga.log. The /usr/local/var part is changed by --localestatedir option.

Here is an example that log file is placed into shared NFS directory /nfs/log/groonga.log:

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

2.8.2.1.4. --with-default-encoding=ENCODING

Specifies the default encoding. Available encodings are euc_jp, sjis, utf8, latin1, koi8r and none.

The default is utf-8.

Here is an example that Shift_JIS is used as the default encoding:

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

2.8.2.1.5. --with-match-escalation-threshold=NUMBER

Specifies the default match escalation threshold. See match_escalation_threshold about match escalation threshold. -1 means that match operation never escalate.

The default is 0.

Here is an example that match escalation isn't used by default:

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

2.8.2.1.6. --with-zlib

Enables column value compression by zlib.

The default is disabled.

Here is an example that enables column value compression by zlib:

% ./configure --with-zlib

Note

The disabled reason is that memory leak occurs when it refers column value. This is already known issue as GitHub#6. This issue is not nothing to do with updating column value.

2.8.2.1.7. --with-lzo

Enables column value compression by LZO.

The default is disabled.

Here is an example that enables column value compression by LZO:

% ./configure --with-lzo

Note

The disabled reason is that memory leak occurs when it refers column value. This is already known issue as GitHub#6. This issue is not nothing to do with updating column value.

2.8.2.1.8. --with-message-pack=MESSAGE_PACK_INSTALL_PREFIX

Specifies where MessagePack is installed. If MessagePack isn't installed with --prefix=/usr, you need to specify this option with path that you use for building MessagePack.

If you installed MessagePack with --prefix=$HOME/local option, you sholud specify --with-message-pack=$HOME/local to groonga's configure.

The default is /usr.

Here is an example that uses MessagePack built with --prefix=$HOME/local option:

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

2.8.2.1.9. --with-munin-plugins

Installs Munin plugins for Groonga. They are installed into ${PREFIX}/share/groonga/munin/plugins/.

Those plugins are not installed by default.

Here is an example that installs Munin plugins for Groonga:

% ./configure --with-munin-plugins

2.8.2.1.10. --with-package-platform=PLATFORM

Installs platform specific system management files such as init script. Available platforms are redhat and fedora. redhat is for Red Hat and Red Hat clone distributions such as CentOS. fedora is for Fedora.

Those system management files are not installed by default.

Here is an example that installs CentOS specific system management files:

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

2.8.2.1.11. --help

Shows all configure options.

2.8.2.2. make

configure is succeeded, you can build groonga by make:

% make

If you have multi cores CPU, you can make faster by using -j option. If you have 4 cores CPU, it's good for using -j4 option:

% make -j4

If you get some errors by make, please report them to us: How to report a bug

2.8.2.3. make install

Now, you can install built Groonga!:

% sudo make install

If you have write permission for ${PREFIX}, you don't need to use sudo. e.g. --prefix=$HOME/local case. In this case, use make install:

% make install