Сборка Zabbix агента на macOS

Обзор

Этот раздел демонстрирует как собрать бинарные файлы Zabbix macOS агента из исходного кода с или без TLS.

Предварительные требования

Вам потребуются средства разработки командной строки (Xcode не потребуется), Automake, pkg-config and PCRE (v8.x). Если вы хотите собирать бинарные файла агента с TLS, вам также понадобится OpenSSL или GnuTLS.

Чтобы установить средства разработки командной строки, откройте терминал и выполните svn команду. Вместо того, чтобы отобразить короткое сообщение помощи, вам отобразится информационное сообщение об отсутствующих средствах разработки командной строки и откроется новое GUI окно, чтобы установить эти средства. В этом окне диалога нажмите "Установить".

Чтобы установить Automake и pkg-config, вам потребуется менеджер пакетов Homebrew с https://brew.sh/. Чтобы его установить, откройте терминал и выполните следующую команду:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Copy
✔ Copied

Затем установите Automake и pkg-config:

$ brew install automake
       $ brew install pkg-config
Copy
✔ Copied

Подготовка библиотек PCRE, OpenSSL и GnuTLS зависит от того, каким образом они будут скомпонованы с агентом.

Если вы намереваетесь запускать бинарные файлы агента на компьютере MacOS, на котором уже имеются эти библиотеки, вы можете использовать уже скомпилированные библиотеки, которые поставляются Homebrew. Обычно это машины macOS, которые используют Homebrew для сборки бинарных файлов Zabbix агента или для других целей.

Если бинарные файлы агента будут использоваться на компьютерах macOS, на которых отсутствуют разделяемые версии библиотек, вам потребуется скомпилировать статические версии этих библиотек из исходных кодов и скомпоновать Zabbix агента с ними.

Сбора бинарных файлов агента с разделяемыми библиотеками

Установите PCRE:

$ brew install pcre
Copy
✔ Copied

При сборке с TLS, установите OpenSSL и / или GnuTLS:

$ brew install openssl
       $ brew install gnutls
Copy
✔ Copied

Загрузите исходный код Zabbix:

$ svn export svn://svn.zabbix.com/trunk zabbix-source
Copy
✔ Copied

Соберите агента без TLS:

$ cd zabbix-source/
       $ ./bootstrap.sh
       $ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
       $ make
       $ make install
Copy
✔ Copied

Соберите агента с OpenSSL:

$ cd zabbix-source/
       $ ./bootstrap.sh
       $ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl
       $ make
       $ make install
Copy
✔ Copied

Соберите агента с GnuTLS:

$ cd zabbix-source/
       $ ./bootstrap.sh
       $ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-gnutls=/usr/local/opt/gnutls
       $ make
       $ make install
Copy
✔ Copied

Сборка бинарных файлов агента со статическими библиотеками без TLS

Давайте предположим, что статическая библиотека PCRE будут установлены в $HOME/static-libs. Мы будем использовать PCRE 8.42.

$ PCRE_PREFIX="$HOME/static-libs/pcre-8.42"
Copy
✔ Copied

Загрузите и соберите PCRE с поддержкой Юникод свойств:

$ mkdir static-libs-source
       $ cd static-libs-source
       $ curl --remote-name https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
       $ tar xf pcre-8.42.tar.gz
       $ cd pcre-8.42
       $ ./configure --prefix="$PCRE_PREFIX" --disable-shared --enable-static --enable-unicode-properties
       $ make
       $ make check
       $ make install
Copy
✔ Copied

Загрузите исходный код Zabbix и соберите агента:

$ svn export svn://svn.zabbix.com/trunk zabbix-source
       $ cd zabbix-source/
       $ ./bootstrap.sh
       $ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-libpcre="$PCRE_PREFIX"
       $ make
       $ make install
Copy
✔ Copied

Сборка бинарных файлов агента со статическими библиотеками с OpenSSL

После успешной сборки OpenSSL рекомендуется выполнить make test. Даже, если сборка прошла успешно, тесты иногда завершаются с ошибками. Если это как раз ваш случай, тогда проблемы необходимо исследовать и решить перед тем как продолжить.

Давайте предположим, что статические библиотеки PCRE и OpenSSL будут установлены в $HOME/static-libs. Мы будем использовать PCRE 8.42 и OpenSSL 1.1.1a.

$ PCRE_PREFIX="$HOME/static-libs/pcre-8.42"
       $ OPENSSL_PREFIX="$HOME/static-libs/openssl-1.1.1a"
Copy
✔ Copied

Давайте собирать статические библиотеки в static-libs-source:

$ mkdir static-libs-source
       $ cd static-libs-source
Copy
✔ Copied

Загрузите и соберите PCRE с поддержкой Юникод свойств:

$ curl --remote-name https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
       $ tar xf pcre-8.42.tar.gz
       $ cd pcre-8.42
       $ ./configure --prefix="$PCRE_PREFIX" --disable-shared --enable-static --enable-unicode-properties
       $ make
       $ make check
       $ make install
       $ cd ..
Copy
✔ Copied

Загрузите и соберите OpenSSL:

$ curl --remote-name https://www.openssl.org/source/openssl-1.1.1a.tar.gz
       $ tar xf openssl-1.1.1a.tar.gz
       $ cd openssl-1.1.1a
       $ ./Configure --prefix="$OPENSSL_PREFIX" --openssldir="$OPENSSL_PREFIX" --api=1.1.0 no-shared no-capieng no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method darwin64-x86_64-cc
       $ make
       $ make test
       $ make install_sw
       $ cd ..
Copy
✔ Copied

Загрузите исходный код Zabbix и соберите агента:

$ svn export svn://svn.zabbix.com/trunk zabbix-source
       $ cd zabbix-source/
       $ ./bootstrap.sh
       $ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-libpcre="$PCRE_PREFIX" --with-openssl="$OPENSSL_PREFIX"
       $ make
       $ make install
Copy
✔ Copied

Сборка бинарных файлов агента со статическими библиотеками с GnuTLS

GnuTLS зависит от крипто серверной библиотеки Nettle и арифметической библиотеки GMP. Вместо использования полной библиотеки GMP, в этом руководстве используется mini-gmp, которая включена в Nettle.

После успешной сборки GnuTLS и Nettle рекомендуется выполнить make check. Даже, если сборка прошла успешно, тесты иногда завершаются с ошибками. Если это как раз ваш случай, тогда проблемы необходимо исследовать и решить перед тем как продолжить.

Давайте предположим, что статические библиотеки PCRE, Nettle и GnuTLS будут установлены в $HOME/static-libs. Мы будем использовать PCRE 8.42, Nettle 3.4.1 и GnuTLS 3.6.5.

$ PCRE_PREFIX="$HOME/static-libs/pcre-8.42"
       $ NETTLE_PREFIX="$HOME/static-libs/nettle-3.4.1"
       $ GNUTLS_PREFIX="$HOME/static-libs/gnutls-3.6.5"
Copy
✔ Copied

Давайте собирать статические библиотеки в static-libs-source:

$ mkdir static-libs-source
       $ cd static-libs-source
Copy
✔ Copied

Загрузите и соберите Nettle:

$ curl --remote-name https://ftp.gnu.org/gnu/nettle/nettle-3.4.1.tar.gz
       $ tar xf nettle-3.4.1.tar.gz
       $ cd nettle-3.4.1
       $ ./configure --prefix="$NETTLE_PREFIX" --enable-static --disable-shared --disable-documentation --disable-assembler --enable-x86-aesni --enable-mini-gmp
       $ make
       $ make check
       $ make install
       $ cd ..
Copy
✔ Copied

Загрузите и соберите GnuTLS:

$ curl --remote-name https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.5.tar.xz
       $ tar xf gnutls-3.6.5.tar.xz
       $ cd gnutls-3.6.5
       $ PKG_CONFIG_PATH="$NETTLE_PREFIX/lib/pkgconfig" ./configure --prefix="$GNUTLS_PREFIX" --enable-static --disable-shared --disable-guile --disable-doc --disable-tools --disable-libdane --without-idn --without-p11-kit --without-tpm --with-included-libtasn1 --with-included-unistring --with-nettle-mini
       $ make
       $ make check
       $ make install
       $ cd ..
Copy
✔ Copied

Загрузите исходный код Zabbix и соберите агента:

$ svn export svn://svn.zabbix.com/trunk zabbix-source
       $ cd zabbix-source/
       $ ./bootstrap.sh
       $ CFLAGS="-Wno-unused-command-line-argument -framework Foundation -framework Security" \
       > LIBS="-lgnutls -lhogweed -lnettle" \
       > LDFLAGS="-L$GNUTLS_PREFIX/lib -L$NETTLE_PREFIX/lib" \
       > ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-libpcre="$PCRE_PREFIX" --with-gnutls="$GNUTLS_PREFIX"
       $ make
       $ make install
Copy
✔ Copied
To toggle search highlight, press Ctrl+Alt+H
Have an improvement suggestion for this page? Select the text that could be improved and press Ctrl+Enter to send it to the editors.