]> Installation
Packages Some operating systems or software package vendors may provide ready-to-use, pre-built software packages for Kea. Installing a pre-built package means you do not need to install the software required only to build Kea and do not need to make the software. FreeBSD ports, NetBSD pkgsrc, and Debian testing package collections provide all the prerequisite packages.
Installation Hierarchy The following is the directory layout of the complete Kea installation. (All directory paths are relative to the installation directory): bin/ — utility programs. etc/kea/ — configuration files. include/ — C++ development header files. lib/ — libraries. sbin/ — server software and commands used by the system administrator. share/kea/ — configuration specifications and examples. share/doc/kea/ — this guide, other supplementary documentation, and examples. share/man/ — manual pages (online documentation). var/kea/ — server identification, lease databases, and log files.
Building Requirements In addition to the run-time requirements (listed in ), building Kea from source code requires various development include headers and program development tools. Some operating systems have split their distribution packages into a run-time and a development package. You will need to install the development package versions, which include header files and libraries, to build Kea from the source code. Building from source code requires the following software installed on the system: Boost C++ Libraries (). The oldest Boost version used for testing is 1.57 (it may work with older versions). Boost system library is required. Building boost header only is no longer recommended. Botan (at least version 1.8) or OpenSSL (at least version 1.0.1). log4cplus (at least version 1.0.3) development include headers. A C++ compiler (with C++11 support) and standard development headers. Kea builds have been tested with GCC g++ 4.7.2 4.7.3 4.8.2 4.8.4 4.8.5 4.9.3 4.9.4 5.3.1 5.4.0 6.3.0 6.3.1 clang-800.0.38 clang-802.0.42 clang-900.0.37 The development tools automake, libtool, pkg-config. The MySQL client and the client development libraries, when using the --with-dhcp-mysql configuration flag to build the Kea MySQL database backend. In this case an instance of the MySQL server running locally or on a machine reachable over a network is required. Note that running the unit tests requires a local MySQL server. The PostgreSQL client and the client development libraries, when using the --with-dhcp-pgsql configuration flag to build the Kea PostgreSQL database backend. In this case an instance of the PostgreSQL server running locally or on some other machine, reachable over the network from the machine running Kea, is required. Note that running the unit tests requires a local PostgreSQL server. googletest (version 1.8 or later), when using the --with-gtest configuration option to build the unit tests. The documentation generation tools elinks, docbook-xsl, libxslt and Doxygen, if using the --enable-generate-docs configuration option to create the documentation.
Installation from Source Kea is open source software written in C++. It is freely available in source code form from ISC as a downloadable tar file. A copy of the Kea source code repository is accessible from Github (). Kea may also be available in pre-compiled ready-to-use packages from operating system vendors.
Download Tar File The Kea release tarballs may be downloaded from: (using FTP or HTTP).
Retrieve from Git Downloading this "bleeding edge" code is recommended only for developers or advanced users. Using development code in a production environment is not recommended. When building from source code retrieved via Git, additional software will be required: automake (v1.11 or later), libtoolize, and autoconf (v2.69 or later). These may need to be installed. The latest development code is available on Github (see ). The Kea source is public and development is done in the master branch. The code can be checked out from https://github.com/isc-projects/kea.git: $ git clone https://github.com/isc-projects/kea.git The code checked out from the git repository does not include the generated configure script, Makefile.in files, nor their related build files. They can be created by running autoreconf with the switch. This will run autoconf, aclocal, libtoolize, autoheader, automake, and related commands. Write access to the Kea repository is only granted to ISC staff. If you are a developer planning to contribute to Kea, please fork our Github repository and use the "pull request" mechanism to request integration of your code. Please consult for help on how to fork a Github repository. The Kea Developer's Guide contains more information about the process, as well as describing the requirements for contributed code to be accepted by ISC.
Configure Before the Build Kea uses the GNU Build System to discover build environment details. To generate the makefiles using the defaults, simply run: $ ./configure Run ./configure with the switch to view the different options. Some commonly-used options are: --prefix Define the installation location (the default is /usr/local). --with-boost-include Define the path to find the Boost headers. --with-botan-config Specify the path to the botan-config script to build with Botan for cryptographic functions. --with-dhcp-mysql Build Kea with code to allow it to store leases (and access host reservations) in a MySQL database. --with-dhcp-pgsql Build Kea with code to allow it to store leases (and access host reservations) in a PostgreSQL database. --with-gtest-source Enable the building of the C++ Unit Tests using the Google Test framework. This option specifies the path to the gtest source. (If the framework is not installed on your system, it can be downloaded from .) --with-log4cplus Define the path to find the Log4cplus headers and libraries. --with-openssl Replace Botan by the OpenSSL the cryptographic library. By default configure searches for a valid Botan installation: if one is not found, it searches for OpenSSL. For instructions concerning the installation and configuration of database backends for Kea, see . For information concerning the configuration backends, see . For example, the following command configures Kea to find the Boost headers in /usr/pkg/include, specifies that PostgreSQL support should be enabled, and sets the installation location to /opt/kea: $ ./configure \ --with-boost-include=/usr/pkg/include \ --with-dhcp-pgsql=/usr/local/bin/pg_config \ --prefix=/opt/kea If you have some problems with building Kea using the header-only Boost code or you'd like to use the Boost system library (assumed for the sake of this example to be located in /usr/pkg/lib): $ ./configure \ --with-boost-libs=-lboost_system \ --with-boost-lib-dir=/usr/pkg/lib If configure fails, it may be due to missing or old dependencies. If configure succeeds, it displays a report with the parameters used to build the code. This report is saved into the file config.report and is also embedded into the executable binaries, e.g., kea-dhcp4.
Build After the configure step is complete, build the executables from the C++ code and prepare the Python scripts by running the command: $ make
Install To install the Kea executables, support files, and documentation, issue the command: $ make install Do not use any form of parallel or job server options (such as GNU make's -j option) when performing this step: doing so may cause errors. The install step may require superuser privileges. If required, run ldconfig as root with /usr/local/lib (or with prefix/lib if configured with --prefix) in /etc/ld.so.conf (or the relevant linker cache configuration file for your OS): $ ldconfig If you do not run ldconfig where it is required, you may see errors like the following: program: error while loading shared libraries: libkea-something.so.1: cannot open shared object file: No such file or directory
Selecting the Configuration Backend Kea 0.9 introduced configuration backends that are switchable during the compilation phase. Only one backend, JSON, is currently supported. JSON JSON is the default configuration backend that allows Kea to read JSON configuration files from disk. It does not require any framework and thus is considered more lightweight. It allows dynamic on-line reconfiguration using Kea API.
DHCP Database Installation and Configuration Kea stores its leases in a lease database. The software has been written in a way that makes it possible to choose which database product should be used to store the lease information. At present, Kea supports four database backends: MySQL, PostgreSQL, Cassandra and Memfile. To limit external dependencies, MySQL, PostgreSQL and Cassandra support are disabled by default and only Memfile is available. Support for the optional external database backend must be explicitly included when Kea is built. This section covers the building of Kea with one of the optional backends and the creation of the lease database. When unit tests are built with Kea (the --with-gtest configuration option is specified), the databases must be manually pre-configured for the unit tests to run. The details of this configuration can be found in the Kea Developer's Guide.
Building with MySQL Support Install MySQL according to the instructions for your system. The client development libraries must be installed. Build and install Kea as described in , with the following modification. To enable the MySQL database code, at the "configure" step (see ), the --with-dhcp-mysql switch should be specified: ./configure [other-options] --with-dhcp-mysql If MySQL was not installed in the default location, the location of the MySQL configuration program "mysql_config" should be included with the switch, i.e. ./configure [other-options] --with-dhcp-mysql=path-to-mysql_config See for details regarding MySQL database configuration.
Building with PostgreSQL support Install PostgreSQL according to the instructions for your system. The client development libraries must be installed. Client development libraries are often packaged as "libpq". Build and install Kea as described in , with the following modification. To enable the PostgreSQL database code, at the "configure" step (see ), the --with-dhcp-pgsql switch should be specified: ./configure [other-options] --with-dhcp-pgsql If PostgreSQL was not installed in the default location, the location of the PostgreSQL configuration program "pg_config" should be included with the switch, i.e. ./configure [other-options] --with-dhcp-pgsql=path-to-pg_config See for details regarding PostgreSQL database configuration.
Building with CQL (Cassandra) support Install Cassandra according to the instructions for your system. The Cassandra project website contains useful pointers: . Download and compile cpp-driver from DataStax. For details regarding dependencies for building cpp-driver, see the project homepage . In June 2016, the following commands were used: $ git clone https://github.com/datastax/cpp-driver $ cd cpp-driver $ mkdir build $ cmake .. $ make As of June 2016, cpp-driver does not include cql_config script yet. Work is in progress to contribute such a script to the cpp-driver project but, until that is complete, intermediate steps that need to be conducted. A cql_config script is present in the tools/ directory of the Kea sources. Before using it, please edit cql_config_defines.sh in the same directory and change the environment variable CPP_DRIVER_PATH to point to the directory, where cpp-driver sources are located. (If the cpp-driver sources already provide cql_config script please use that rather than the version from Kea sources.) Build and install Kea as described in , with the following modification. To enable the Cassandra (CQL) database code, at the "configure" step (see ), do: ./configure [other-options] --with-cql=path-to-cql_config