Этот раздел демонстрирует как собрать бинарные файлы Zabbix macOS агента из исходного кода с или без TLS.
Вам потребуются средства разработки командной строки (Xcode не потребуется), Automake, pkg-config and PCRE (v8.x). Если вы хотите собирать бинарные файла агента с TLS, вам также понадобится OpenSSL или GnuTLS.
Чтобы установить Automake и pkg-config, вам потребуется менеджер пакетов Homebrew с https://brew.sh/. Чтобы его установить, откройте терминал и выполните следующую команду:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Затем установите Automake и pkg-config:
Подготовка библиотек PCRE, OpenSSL и GnuTLS зависит от того, каким образом они будут скомпонованы с агентом.
Если вы намереваетесь запускать бинарные файлы агента на компьютере MacOS, на котором уже имеются эти библиотеки, вы можете использовать уже скомпилированные библиотеки, которые поставляются Homebrew. Обычно это машины macOS, которые используют Homebrew для сборки бинарных файлов Zabbix агента или для других целей.
Если бинарные файлы агента будут использоваться на компьютерах macOS, на которых отсутствуют разделяемые версии библиотек, вам потребуется скомпилировать статические версии этих библиотек из исходных кодов и скомпоновать Zabbix агента с ними.
Установите PCRE:
При сборке с TLS, установите OpenSSL и / или GnuTLS:
Загрузите исходный код Zabbix:
Соберите агента без TLS:
$ cd zabbix
$ git checkout 5.0.0 -b 5.0.0 # замените 5.0.0 на последний доступный релиз
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
$ make
$ make install
Соберите агента с OpenSSL:
$ cd zabbix/
$ git checkout 5.0.0 -b 5.0.0 # замените 5.0.0 на последний доступный релиз
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl
$ make
$ make install
Соберите агента с GnuTLS:
$ cd zabbix/
$ git checkout 5.0.0 -b 5.0.0 # замените 5.0.0 на последний доступный релиз
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-gnutls=/usr/local/opt/gnutls
$ make
$ make install
Давайте предположим, что статическая библиотека PCRE будут установлены в $HOME/static-libs
. Мы будем использовать PCRE 8.42.
Загрузите и соберите 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
Загрузите исходный код Zabbix и соберите агента:
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
$ cd zabbix
$ git checkout 5.0.0 -b 5.0.0 # замените 5.0.0 на последний доступный релиз
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-libpcre="$PCRE_PREFIX"
$ make
$ make install
После успешной сборки OpenSSL рекомендуется выполнить make test
. Даже, если сборка прошла успешно, тесты иногда завершаются с ошибками. Если это как раз ваш случай, тогда проблемы необходимо исследовать и решить перед тем как продолжить.
Давайте предположим, что статические библиотеки PCRE и OpenSSL будут установлены в $HOME/static-libs
. Мы будем использовать PCRE 8.42 и OpenSSL 1.1.1a.
Давайте собирать статические библиотеки в static-libs-source
:
Загрузите и соберите 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 ..
Загрузите и соберите 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 ..
Загрузите исходный код Zabbix и соберите агента:
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
$ cd zabbix
$ git checkout 5.0.0 -b 5.0.0 # замените 5.0.0 на последний доступный релиз
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-libpcre="$PCRE_PREFIX" --with-openssl="$OPENSSL_PREFIX"
$ make
$ make install
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"
Давайте собирать статические библиотеки в static-libs-source
:
Загрузите и соберите 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 ..
Загрузите и соберите 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 ..
Загрузите исходный код Zabbix и соберите агента:
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
$ cd zabbix
$ git checkout 5.0.0 -b 5.0.0 # замените 5.0.0 на последний доступный релиз
$ ./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