- Compilation de l'agent Zabbix sur macOS
- Aperçu
- Prérequis
- Compilation des binaires de l’agent avec des bibliothèques partagées
- Compilation des binaires de l'agent avec des bibliothèques statiques sans TLS
- Compilation des binaires de l'agent avec des bibliothèques statiques et OpenSSL
- Compilation des binaires de l'agent avec des bibliothèques statiques avec GnuTLS
Compilation de l'agent Zabbix sur macOS
Aperçu
Cette section montre comment créer des binaires d'agent Zabbix macOS à partir de sources avec ou sans TLS.
Prérequis
Vous aurez besoin des outils de développement en ligne de commande (Xcode n’est pas requis), d’Automake, de pkg-config et de PCRE (v8.x) ou PCRE2 (v10.x). Si vous souhaitez compiler des binaires d’agent avec TLS, vous aurez également besoin d’OpenSSL ou de GnuTLS.
Pour installer Automake et pkg-config, vous aurez besoin du gestionnaire de paquets Homebrew disponible sur https://brew.sh/. Pour l’installer, ouvrez un 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 :
brew install automake
brew install pkg-config
La préparation des bibliothèques PCRE, OpenSSL et GnuTLS dépend de la manière dont elles seront liées à l’agent.
Si vous prévoyez d’exécuter les binaires de l’agent sur une machine macOS qui dispose déjà de ces bibliothèques, vous pouvez utiliser les bibliothèques précompilées fournies par Homebrew. Il s’agit généralement de machines macOS qui utilisent Homebrew pour compiler les binaires de l’agent Zabbix ou à d’autres fins.
Si les binaires de l’agent doivent être utilisés sur des machines macOS qui ne disposent pas de la version partagée des bibliothèques, vous devez compiler des bibliothèques statiques à partir des sources et lier l’agent Zabbix avec celles-ci.
Compilation des binaires de l’agent avec des bibliothèques partagées
Installez PCRE2 (remplacez pcre2 par pcre dans les commandes ci-dessous, si nécessaire) :
brew install pcre2
Lors de la compilation avec TLS, installez OpenSSL et/ou GnuTLS :
brew install openssl
brew install gnutls
Téléchargez les sources de Zabbix :
git clone https://git.zabbix.com/scm/zbx/zabbix.git
Compilez l’agent sans TLS :
cd zabbix
./bootstrap.sh
./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
make
make install
Compilez 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
Compilez 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
Compilation des binaires de l'agent avec des bibliothèques statiques sans TLS
Supposons que les bibliothèques statiques PCRE seront installées dans
$HOME/static-libs. Nous utiliserons PCRE2 10.39.
PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
Téléchargez et compilez 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 le code source de Zabbix et compilez 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
Compilation des binaires de l'agent avec des bibliothèques statiques et OpenSSL
Lors de la compilation d'OpenSSL, il est recommandé d'exécuter make test après
une compilation réussie. Même si la compilation a réussi, les tests échouent parfois.
Si c'est le cas, les problèmes doivent être analysé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.
PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
OPENSSL_PREFIX="$HOME/static-libs/openssl-1.1.1a"
Compilons les bibliothèques statiques dans static-libs-source :
mkdir static-libs-source
cd static-libs-source
Téléchargez et compilez 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 compilez 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 le code source de Zabbix et compilez 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
Compilation des binaires de l'agent avec des bibliothèques statiques avec GnuTLS
GnuTLS dépend du backend cryptographique 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 incluse dans Nettle.
Lors de la compilation de GnuTLS et de Nettle, il est recommandé d'exécuter make check
après une compilation réussie. Même si la compilation a réussi, les tests
échouent parfois. Si c'est le cas, les problèmes doivent être analysé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"
Compilons les bibliothèques statiques dans static-libs-source :
mkdir static-libs-source
cd 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 le code source de 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