git » nmdb » master » tree

[master] / INSTALL

Quick guide for the patience-impaired
-------------------------------------

At the top level directory, run:

 $ make install

to build and install the server, library and utilities.


How to compile and install
--------------------------

The only mandatory requisite to build nmdb is libevent
(http://www.monkey.org/~provos/libevent/).

There are several build-time options, in two groups: supported network
protocols, and backend databases.

The network protocols:

 * TCP and UDP, the well-known network protocols.
 * TIPC (http://tipc.sf.net/), a cluster-oriented network protocol. You will
	need a Linux kernel >= 2.6.16 with TIPC support (most distributions
	enable it by default).
 * SCTP, a network protocol similar to UDP and TCP, offering reliable message
	passing over IP, among other very useful things. You will need the
	libsctp-dev (or equivalent) package.

The backend databases:

 * qdbm (http://qdbm.sf.net/)
 * bdb (http://www.oracle.com/database/berkeley-db/)
 * Tokyo Cabinet (http://1978th.net/tokyocabinet/)
 * tdb (http://tdb.samba.org/)
 * A null backend (to use when you don't need a real one)

By default, network protocols and backends are automatically detected
according to the available libraries.

You can change the defaults by passing parameters to make, like this:

 $ make BE_ENABLE_$BACKEND=[1|0] ENABLE_$PROTO=[1|0]

Where $PROTO can be TCP, UDP, TIPC or SCTP, and $BACKEND can be QDBM, BDB, TC,
TDB or NULL.

For instance, to build with bdb backend and without TIPC support, use:

 $ make BE_ENABLE_BDB=1 ENABLE_TIPC=0


Bindings
--------

To compile the Python bindings, you need to have the library already
installed. Use "make python_install" at the top level directory to build and
install the modules. The module will be named "nmdb". The same goes for Python
3, use "make python3_install".

The other bindings do not have a properly defined install procedure, and
you'll need knowledge of the language to install them.


Tests
-----

Tests are available in the "tests/" directory. Some are written in C
("tests/c/"), some in Python ("tests/python/").

Python tests are useful for stress and coverage tests, while the C ones are
useful for performance measurements.