3.1. Procedure – Compiling syslog-ng from source
To compile syslog-ng Open Source Edition (OSE) from the source code, complete the following steps. Alternatively, you can use precompiled binary packages on several platforms. For a list of third-party packages available for various Linux, UNIX, and other platforms, see the syslog-ng OSE third-party binaries page.
Download the latest version of syslog-ng OSE from GitHub. The source code is available as a tar.gz archive file.
Install the following packages that are required to compile syslog-ng. These packages are available for most UNIX/Linux systems. Alternatively, you can also download the sources and compile them.
A version of the gcc C compiler that properly supports Thread Local Storage (TLS), for example, version 4.5.
The GNU flex lexical analyser generator, available here.
The bison parser generator, available here.
The development files of the glib library, available here.
The development files of the Autoconf Archive package, available here.
The syslog-ng OSE application now uses PCRE-type regular expressions by default. It requires the
libpcrelibrary package, available here.
If you want to use the Java-based modules of syslog-ng OSE (for example, the Elasticsearch, HDFS, or Kafka destinations), you must compile syslog-ng OSE with Java support.
Download and install the Java Runtime Environment (JRE), 1.7 (or newer). You can use OpenJDK or Oracle JDK, other implementations are not tested.
Install gradle version 2.2.1 or newer.
LD_LIBRARY_PATHto include the
libjvm.sofile, for example:LD_LIBRARY_PATH=/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server:$LD_LIBRARY_PATH
Note that many platforms have a simplified links for Java libraries. Use the simplified path if available. If you use a startup script to start syslog-ng OSE set
LD_LIBRARY_PATHin the script as well.
If you are behind an HTTP proxy, create a
modules/java-modules/directory. Set the proxy parameters in the file. For details, see The Gradle User Guide.
If you want to post log messages as HTTP requests using the
http()destination, install the development files of the libcurl library. This library is not needed if you use the
--disable-httpcompile option. Alternatively, you can use a Java-based implementation of the HTTP destination.
If you want to use the spoof-source function of syslog-ng, install the development files of the libnet library, available here.
If you want to send e-mails using the
smtp()destination, install the development files of the libesmtp library. This library is not needed if you use the
If you want to use the /etc/hosts.deny and /etc/hosts.allow for TCP access, install the development files of the libwrap (also called TCP-wrappers) library, available here.
Enter the new directory and issue the following commands. (If the
./configurefile does not exist, for example, because you cloned the repository from GitHub instead of using a release tarball, execute the ./autogen.sh command.)
$ ./configure $ make $ make install
Uncompress the syslog-ng archive using the
tar xvfz syslog-ng-x.xx.tar.gz
unzip -c syslog-ng-x.xx.tar.gz | tar xvf -
command. A new directory containing the source code of syslog-ng will be created.
Enter the new directory and issue the following commands:
$ ./configure $ make $ make install
These commands will build syslog-ng using its default options.
If needed, use the following options to change how syslog-ng is compiled using the following command syntax:
$ ./configure --compile-time-option-name
You can also use --disable options, to explicitly disable a feature and override autodetection. For example, to disable the TCP-wrapper support, use the --disable-tcp-wrapper option. For the list of available compiling options, see Section 3.2, Compiling options of syslog-ng OSE.