3 Compilando Zabbix agent en macOS
Descripción general
Esta sección muestra como compilar los binarios del Zabbix macOS agent desde el código fuente con o sin TLS.
Prerrequisitos
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:
$ brew install automake
$ brew install 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.
Compilando binarios del agente con librerías compartidas
Instale PCRE2 (en caso de ser necesario, reemplace pcre2 con pcre en los siguientes comandos):
$ brew install pcre2
Cuando se compila con TLS, instale OpenSSL y/o GnuTLS:
$ brew install openssl
$ brew install gnutls
Descargue el código fuente de Zabbix:
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
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
Compilando binarios del agent con librerías estáticas sin TLS
Asumamos que las librerías estáticas de PCRE serán instaladas en
$HOME/static-libs. Utilizaremos PCRE2 10.39.
$ PCRE_PREFIX="$HOME/static-libs/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
Compilando binarios del agent con librerías estáticas y OpenSSL
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.
$ PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
$ OPENSSL_PREFIX="$HOME/static-libs/openssl-1.1.1a"
Ahora compilaremos las librerías estáticas en static-libs-source:
$ mkdir static-libs-source
$ cd 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
Compilando binarios del agent con librerías estáticas y GnuTLS
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:
$ mkdir static-libs-source
$ cd 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