Esta sección muestra como compilar los binarios del Zabbix macOS agent desde el código fuente con o sin TLS.
Va a necesitar herramientas de desarrollador de línea de comandos (Xcode no es necesario), Automake, pkg-config y PCRE (v8.x) o PCRE2 (v10.x). Si quiere compilar binarios para el agent con TLS, también requerirá OpenSSL o GnuTLS.
Para instalar Automake y pkg-config, ser requerirá el administrador de paquetes Homebrew de https://brew.sh/. Para instalarlo, abra una terminal y ejecute el siguiente comando:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Después instale Automake y pkg-config:
La preparación de las librerías PCRE, OpenSSL y GnuTLS depende de la manera en cómo serán ligadas al agent.
Si usted tiene la intención de ejecutar los binarios del agent en una máquina macOS que ya cuenta con estas librerías, es posible utilizar las librerías pre-compiladas provistas por Homebrew. Por lo general estas son maquinas macOS que utilizan Homebrew para compilar los binarios de Zabbix agent para otros propósitos.
Si los binarios del agent van a ser utilizados en máquinas macOS que no cuentan con la versión compartida de las librerías, será necesario compilar librerías estáticas desde el código fuente y ligar Zabbix agent a ellas.
Instale PCRE2 (en caso de ser necesario, reemplace pcre2 con pcre en los siguientes comandos):
Cuando se compila con TLS, instale OpenSSL y/o GnuTLS:
Descargue el código fuente de Zabbix:
Compilar el agente sin TLS:
$ cd zabbix
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
$ make
$ make install
Compilar el agente con OpenSSL:
$ cd zabbix
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl
$ make
$ make install
Compilar el agente con 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
Asumamos que las librerías estáticas de PCRE serán instaladas en $HOME/static-libs
. Utilizaremos PCRE2 10.39.
Descargue y compile PCRE con soporte para propiedades 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
Descargue el código fuente Zabbix y compile el 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
Cuando compilamos OpenSSL, es recomendado ejecutar make test
tras una compilación exitosa. Incluso cuando nuestra compilación fue exitosa, las pruebas en ocasiones fallan. Si este fuese el caso, los problemas tendrán que ser investigados y resueltos antes de continuar.
Asumamos que las librerías estáticas de PCRE y OpenSSL serán instaladas en $HOME/static-libs
. Usaremos PCRE2 10.39 y OpenSSL 1.1.1a.
Ahora compilaremos las librerías estáticas en static-libs-source
:
Descargar y compilar PCRE con soporte a propiedades 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 ..
Descargar y compilar 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 ..
Descargar el código fuente Zabbix y compilar el 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 depende de las librerías Nettle crypto backend y GMP arithmetic. En lugar de usar todas las librerías GMP, esta guia usará mini-gmp que es incluido en Nettle.
Cuando compulamos GnuTLS y Nettle, es recomendado ejecutar make check
después de una compilación exitosa. Incluso cuando nuestra compilación fue exitosa, las pruebas en ocasiones fallan. Si este fuese el caso, los problemas tendrán que ser investigados y resueltos antes de continuar.
Asumamos que las librerías estáticas de PCRE, Nettle y GnuTLS serán instaladas en $HOME/static-libs
. Utilizaremos PCRE2 10.39, Nettle 3.4.1 y 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"
Ahora compilaremos las librerías estáticas en static-libs-source
:
Descargar y compilar 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 ..
Descargar y compilar 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 ..
Descargar el código fuente Zabbix y compilar el 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