]> granicus.if.org Git - icinga2/blobdiff - INSTALL.md
Implement reload functionality for Windows
[icinga2] / INSTALL.md
index 2120633350b115f7c486528bba31aa1d23d3ae0a..43f558ba6335aedea7c8e7e8989618c038f81593 100644 (file)
@@ -20,18 +20,23 @@ parentheses):
 
 * cmake
 * GNU make (make)
-* C++ compiler (gcc-c++ on RHEL, build-essential on Debian)
-* OpenSSL library and header files (openssl-devel on RHEL, libssl-dev on Debian)
+* C++ compiler (gcc-c++ >= 4.7 on RHEL/SUSE, build-essential on Debian, alternatively clang++)
+* OpenSSL library and header files >= 0.9.8 (openssl-devel on RHEL, libopenssl1-devel on SLES11,
+libopenssl-devel on SLES12, libssl-dev on Debian)
 * Boost library and header files (boost-devel on RHEL, libboost-all-dev on Debian)
 * GNU bison (bison)
 * GNU flex (flex) >= 2.5.35
 * recommended: libexecinfo on FreeBSD (automatically used when Icinga 2 is
                installed via port or package)
-* optional: MySQL (mysql-devel on RHEL, libmysqlclient-dev on Debian) set CMake
-             variable `ICINGA2_WITH_MYSQL` to enable
-* optional: PostgreSQL (postgresql-devel on RHEL, libpq-dev on Debian) set CMake
-            variable `ICINGA2_WITH_PGSQL` to enable
+* optional: MySQL (mysql-devel on RHEL, libmysqlclient-devel on SUSE, libmysqlclient-dev on Debian);
+            set CMake variable `ICINGA2_WITH_MYSQL` to `OFF` to disable this module
+* optional: PostgreSQL (postgresql-devel on RHEL, libpq-dev on Debian); set CMake
+            variable `ICINGA2_WITH_PGSQL` to `OFF` to disable this module
 * optional: YAJL (yajl-devel on RHEL, libyajl-dev on Debian)
+* optional: libedit (libedit-devel on CentOS (RHEL requires rhel-7-server-optional-rpms
+            repository for el7 e.g.), libedit-dev on Debian)
+* optional: Termcap (libtermcap-devel on RHEL, not necessary on Debian) - only
+            required if libedit doesn't already link against termcap/ncurses
 
 Note: RHEL5 ships an ancient flex version. Updated packages are available for
 example from the repoforge buildtools repository.
@@ -58,68 +63,6 @@ permissions to the external command pipe and livestatus socket:
 Make sure to replace "www-data" with the name of the user your web server
 is running as.
 
-
-## Building Release Tarballs
-
-In order to build a release tarball you should first check out the Git repository
-in a new directory. If you're using an existing check-out you should make sure
-that there are no local modifications:
-
-    $ git status
-
-### Release Checklist
-
-Here's a short check-list for releases:
-
-Update the [.mailmap](.mailmap) and [AUTHORS](AUTHORS) files
-
-    $ git log --use-mailmap | grep ^Author: | cut -f2- -d' ' | sort | uniq > AUTHORS
-
-Bump the version in icinga2.spec.
-Update the [ChangeLog](ChangeLog) and [doc/1-about.md](doc/1-about.md) files.
-Commit these changes to the "master" branch.
-
-    $ git commit -v -a -m "Release version <VERSION>"
-
-Create a signed tag (tags/v<VERSION>).
-
-GB:
-
-    $ git tag -u EE8E0720 -m "Version <VERSION>" v<VERSION>
-MF:
-
-    $ git tag -u D14A1F16 -m "Version <VERSION>" v<VERSION>
-    
-Push the tag.
-
-    $ git push --tags
-    
-Merge the "master" branch into the "support/2.1" branch (using --ff-only).
-
-    $ git checkout support/2.1
-    $ git merge --ff-only master
-    $ git push origin support/2.1
-
-Note: CMake determines the Icinga 2 version number using `git describe` if the
-source directory is contained in a Git repository. Otherwise the version number
-is extracted from the [icinga2.spec](icinga2.spec) file. This behavior can be overridden by
-creating a file called `icinga-version.h.force` in the source directory.
-Alternatively the `-DICINGA2_GIT_VERSION_INFO=ON option` for CMake can be used to
-disable the usage of `git describe`.
-
-### Build Tarball
-
-Use `git archive` to build the release tarball:
-
-    $ VERSION=2.2.1
-    $ git archive --format=tar --prefix=icinga2-$VERSION/ tags/v$VERSION | gzip >icinga2-$VERSION.tar.gz
-
-Finally you should verify that the tarball only contains the files it should contain:
-
-    $ VERSION=2.2.1
-    $ tar ztf icinga2-$VERSION.tar.gz | less
-
-
 ## Building Icinga 2
 
 Once you have installed all the necessary build requirements you can build
@@ -141,54 +84,83 @@ variables are supported:
 - `ICINGA2_GROUP`: The group Icinga 2 should run as; defaults to `icinga`
 - `ICINGA2_GIT_VERSION_INFO`: Whether to use Git to determine the version number; defaults to `ON`
 - `ICINGA2_COMMAND_GROUP`: The command group Icinga 2 should use; defaults to `icingacmd`
-- `ICINGA2_UNITY_BUILD`: Whether to perform a unity build; defaults to `OFF`
+- `ICINGA2_UNITY_BUILD`: Whether to perform a unity build; defaults to `ON`
+- `ICINGA2_LTO_BUILD`: Whether to use link time optimization (LTO); defaults to `OFF`
 - `ICINGA2_PLUGINDIR`: The path for the Monitoring Plugins project binaries; defaults to `/usr/lib/nagios/plugins`
 - `ICINGA2_RUNDIR`: The location of the "run" directory; defaults to `CMAKE_INSTALL_LOCALSTATEDIR/run`
 - `CMAKE_INSTALL_SYSCONFDIR`: The configuration directory; defaults to `CMAKE_INSTALL_PREFIX/etc`
-- `ICINGA2_SYSCONFIGFILE`: Where to put the config file the initscript/systemd pulls it's dirs from; 
+- `ICINGA2_SYSCONFIGFILE`: Where to put the config file the initscript/systemd pulls it's dirs from;
 defaults to `CMAKE_INSTALL_PREFIX/etc/sysconfig/icinga2`
 - `CMAKE_INSTALL_LOCALSTATEDIR`: The state directory; defaults to `CMAKE_INSTALL_PREFIX/var`
 - `USE_SYSTEMD=ON|OFF`: Use systemd or a classic SysV initscript; defaults to `OFF`
-- `INSTALL_SYSTEMD_SERVICE_AND_INITSCRIPT=ON|OFF` Force install both the systemd service definition file 
-and the SysV initscript in parallel, regardless of how `USE_SYSTEMD` is set. 
+- `INSTALL_SYSTEMD_SERVICE_AND_INITSCRIPT=ON|OFF` Force install both the systemd service definition file
+and the SysV initscript in parallel, regardless of how `USE_SYSTEMD` is set.
 Only use this for special packaging purposes and if you know what you are doing.
 Defaults to `OFF`.
+- `ICINGA2_WITH_MYSQL`: Determines whether the MySQL IDO module is built; defaults to `ON`
+- `ICINGA2_WITH_PGSQL`: Determines whether the PostgreSQL IDO module is built; defaults to `ON`
+- `ICINGA2_WITH_CHECKER`: Determines whether the checker module is built; defaults to `ON`
+- `ICINGA2_WITH_COMPAT`: Determines whether the compat module is built; defaults to `ON`
+- `ICINGA2_WITH_DEMO`: Determines whether the demo module is built; defaults to `OFF`
+- `ICINGA2_WITH_HELLO`: Determines whether the hello module is built; defaults to `OFF`
+- `ICINGA2_WITH_LIVESTATUS`: Determines whether the Livestatus module is built; defaults to `ON`
+- `ICINGA2_WITH_NOTIFICATION`: Determines whether the notification module is built; defaults to `ON`
+- `ICINGA2_WITH_PERFDATA`: Determines whether the perfdata module is built; defaults to `ON`
+
+CMake determines the Icinga 2 version number using `git describe` if the
+source directory is contained in a Git repository. Otherwise the version number
+is extracted from the [icinga2.spec](icinga2.spec) file. This behavior can be
+overridden by creating a file called `icinga-version.h.force` in the source
+directory. Alternatively the `-DICINGA2_GIT_VERSION_INFO=OFF` option for CMake
+can be used to disable the usage of `git describe`.
 
 ### Building Icinga 2 RPMs
 
 Setup your build environment on RHEL/SUSE and copy the generated tarball from your git
 repository to `rpmbuild/SOURCES`.
-Copy the icinga2.spec file to `rpmbuild/SPEC` and then invoke
+
+Copy the icinga2.spec file to `rpmbuild/SPEC` and then run this command:
 
     $ rpmbuild -ba SPEC/icinga2.spec
 
 ### Building Icinga 2 Debs
 
-Setup your build environment on Debian/Ubuntu and run the following command straight from
-the git repository checkout:
+Setup your build environment on Debian/Ubuntu, copy the 'debian' directory from
+the Debian packaging Git repository (https://anonscm.debian.org/cgit/pkg-nagios/pkg-icinga2.git)
+into your source tree and run the following command:
+
+    $ dpkg-buildpackage -uc -us
+
+### Building Post Install Tasks
+
+After building Icinga 2 yourself, your package build system should at least run the following post
+install requirements:
+
+* enable the `checker`, `notification` and `mainlog` feature by default
+* run 'icinga2 api setup' in order to enable the `api` feature and generate SSL certificates for the node
 
-    $ ./debian/updateversion && dpkg-buildpackage -uc -us
 
 ## Running Icinga 2
 
 Icinga 2 comes with a single binary that takes care of loading all the relevant
 components (e.g. for check execution, notifications, etc.):
 
-    # /usr/sbin/icinga2
-    [2014-06-13 15:29:16 +0200] information/icinga-app: Icinga application loader (version: v2.0.0-beta2-17-gd9289ad)
-    [2014-06-13 15:29:16 +0200] information/icinga-app: Loading application type: icinga/IcingaApplication
-    [2014-06-13 15:29:16 +0200] information/Utility: Loading library 'libicinga.so'
-    [2014-06-13 15:29:16 +0200] information/ConfigCompiler: Adding include search dir: /usr/share/icinga2/include
-    [2014-06-13 15:29:16 +0200] critical/icinga-app: You need to specify at least one config file (using the --config option).
+    # /usr/sbin/icinga2 daemon
+    [2015-03-12 13:25:56 +0100] information/cli: Icinga application loader (version: v2.3.0-20-ga4d3713; debug)
+    [2015-03-12 13:25:56 +0100] information/cli: Loading application type: icinga/IcingaApplication
+    [2015-03-12 13:25:56 +0100] information/Utility: Loading library 'libicinga.dylib'
+    [2015-03-12 13:25:56 +0100] information/ConfigCompiler: Compiling config file: /Users/gunnar/i2/etc/icinga2/icinga2.conf
+    [2015-03-12 13:25:56 +0100] information/ConfigCompiler: Compiling config file: /Users/gunnar/i2/etc/icinga2/constants.conf
+    ...
 
-Icinga 2 can be started as daemon using the provided init script:
+Icinga 2 can be started as daemon using the provided init script:
 
     # /etc/init.d/icinga2
     Usage: /etc/init.d/icinga2 {start|stop|restart|reload|checkconfig|status}
 
 Or if your distribution uses systemd:
 
-    # systemctl {start|stop|reload|status|enable|disable} icinga2.service
+    # systemctl {start|stop|reload|status|enable|disable} icinga2
 
 Icinga 2 reads a single configuration file which is used to specify all
 configuration settings (global settings, hosts, services, etc.). The