Cette section montre comment créer des binaires d'agent Zabbix macOS à partir de sources avec ou sans TLS.
Vous aurez besoin des outils de développement en ligne de commande (Xcode n'est pas requis), Automake, pkg-config et PCRE (v8.x) ou PCRE2 (v10.x). Si vous souhaitez créer des binaires d'agent avec TLS, vous aurez également besoin d'OpenSSL ou de GnuTLS.
Pour installer Automake et pkg-config, vous aurez besoin d'un gestionnaire de paquets Homebrew disponible à l'adresse https://brew.sh/. Pour l'installer, ouvrez le terminal et exécutez la commande suivante :
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Installez ensuite Automake et pkg-config :
La préparation des bibliothèques PCRE, OpenSSL et GnuTLS dépend de la manière dont elles vont être liées à l'agent.
Si vous avez l'intention d'exécuter des fichiers binaires d'agent sur une machine macOS qui possède déjà ces bibliothèques, vous pouvez utiliser des bibliothèques précompilées fournies par Homebrew. Ce sont généralement des machines macOS qui utilisent Homebrew pour créer des binaires d'agent Zabbix ou à d'autres fins.
Si les fichiers binaires de l'agent sont utilisés sur des machines macOS qui ne disposent pas de la version partagée des bibliothèques, vous devez compiler les bibliothèques statiques à partir des sources et lier l'agent Zabbix avec elles.
Installez PCRE2 (remplacez pcre2 par pcre dans les commandes ci-dessous, si nécessaire) :
Lors de la compilation avec TLS, installez OpenSSL et/ou GnuTLS :
Téléchargez les sources de Zabbix :
Construire l'agent sans TLS :
$ cd zabbix
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
$ make
$ make install
Construire l'agent avec OpenSSL :
$ cd zabbix
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl
$ make
$ make install
Construire l'agent avec 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
Supposons que les bibliothèques statiques PCRE seront installées dans$HOME/static-libs
. Nous utiliserons PCRE2 10.39.
Téléchargez et créez PCRE avec la prise en charge des propriétés Unicode :
$ mkdir static-libs-source
$ cd static-libs-source
$ curl --remote-name https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.gz
$ tar xf pcre2-10.39.tar.gz
$ cd pcre2-10.39
$ ./configure --prefix="$PCRE_PREFIX" --disable-shared --enable-static --enable-unicode-properties
$ make
$ make check
$ make install
Téléchargez la source Zabbix et construisez l'agent :
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
$ cd zabbix
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-libpcre2="$PCRE_PREFIX"
$ make
$ make install
Lors de la construction d'OpenSSL, il est recommandé d'exécuter make test
après une construction réussie. Même si la construction a réussi, les tests échouent parfois. Si tel est le cas, les problèmes doivent être recherchés et résolus avant de continuer.
Supposons que les bibliothèques statiques PCRE et OpenSSL seront installées dans $HOME/static-libs
. Nous utiliserons PCRE2 10.39 et OpenSSL 1.1.1a.
Construisons des bibliothèques statiques dans static-libs-source
:
Téléchargez et créez PCRE avec la prise en charge des propriétés Unicode :
$ curl --remote-name https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.gz
$ tar xf pcre2-10.39.tar.gz
$ cd pcre2-10.39
$ ./configure --prefix="$PCRE_PREFIX" --disable-shared --enable-static --enable-unicode-properties
$ make
$ make check
$ make install
$ cd ..
Téléchargez et créez 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 ..
Téléchargez la source Zabbix et construisez l'agent :
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
$ cd zabbix
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-libpcre2="$PCRE_PREFIX" --with-openssl="$OPENSSL_PREFIX"
$ make
$ make install
GnuTLS dépend du backend de chiffrement Nettle et de la bibliothèque arithmétique GMP. Au lieu d'utiliser la bibliothèque GMP complète, ce guide utilisera mini-gmp qui est inclus dans Nettle.
Lors de la construction de GnuTLS et de Nettle, il est recommandé d'exécuter make check
après une construction réussie. Même si la construction a réussi, les tests échouent parfois. Si tel est le cas, les problèmes doivent être recherchés et résolus avant de continuer.
Supposons que les bibliothèques statiques PCRE, Nettle et GnuTLS seront installées dans $HOME/static-libs
. Nous utiliserons PCRE2 10.39, Nettle 3.4.1 et GnuTLS 3.6.5.
$ PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
$ NETTLE_PREFIX="$HOME/static-libs/nettle-3.4.1"
$ GNUTLS_PREFIX="$HOME/static-libs/gnutls-3.6.5"
Construisons des bibliothèques statiques dans static-libs-source
:
Téléchargez et compilez 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 ..
Téléchargez et compilez 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 ..
Téléchargez la source Zabbix et compilez l'agent:
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
$ cd zabbix
$ ./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-libpcre2="$PCRE_PREFIX" --with-gnutls="$GNUTLS_PREFIX"
$ make
$ make install