Esta seção demonstra como construir binários do agent do Zabbix para macOS a partir dos fontes com ou sem TLS.
Você precisará das ferramentas de desenvolvedor de linha de comando (Xcode não é necessário), Automake, pkg-config e PCRE (v8.x) ou PCRE2 (v10.x). Se você quiser compilar binários do agent com TLS, também precisará do OpenSSL ou GnuTLS.
Para instalar o Automake e o pkg-config, você precisará do gerenciador de pacotes Homebrew disponível em https://brew.sh/. Para instalá-lo, abra o terminal e execute o seguinte comando:
Em seguida, instale o Automake e o pkg-config:
A preparação das bibliotecas PCRE, OpenSSL e GnuTLS depende da forma como elas serão vinculadas ao agent.
Se você pretende executar os binários do agent em uma máquina macOS que já possui essas bibliotecas, pode usar as bibliotecas pré-compiladas fornecidas pelo Homebrew. Normalmente, essas são máquinas macOS que usam o Homebrew para compilar binários do agent Zabbix ou para outros fins.
Se os binários do agent forem usados em máquinas macOS que não possuem a versão compartilhada das bibliotecas, você deve compilar as bibliotecas estáticas a partir do código-fonte e vincular o agent Zabbix a elas.
Instale o PCRE2 (substitua pcre2 por pcre nos comandos abaixo, se necessário):
Ao compilar com TLS, instale OpenSSL e/ou GnuTLS:
Baixe o código-fonte do Zabbix:
Compile o agent sem TLS:
cd zabbix ./bootstrap.sh ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 make make installCompile o agent com OpenSSL:
cd zabbix ./bootstrap.sh ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl make make installCompile o agent com GnuTLS:
cd zabbix-source/ ./bootstrap.sh ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-gnutls=/usr/local/opt/gnutls make make installVamos supor que as bibliotecas estáticas do PCRE serão instaladas em $HOME/static-libs. Usaremos o PCRE2 10.39.
Baixe e compile o PCRE com suporte a propriedades 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 installBaixe o código-fonte do Zabbix e compile o 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 installAo compilar o OpenSSL, é recomendável executar make test após a compilação bem-sucedida. Mesmo que a compilação tenha sido bem-sucedida, os testes às vezes falham. Se este for o caso, os problemas devem ser pesquisados e resolvidos antes de continuar.
Vamos supor que as bibliotecas estáticas do PCRE e do OpenSSL serão instaladas em $HOME/static-libs. Usaremos o PCRE2 10.39 e o OpenSSL 1.1.1a.
Vamos compilar as bibliotecas estáticas em static-libs-source:
Baixe e compile o PCRE com suporte a propriedades 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 ..Baixe e compile o 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 ..Baixe o código-fonte do Zabbix e compile o 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 installO GnuTLS depende do backend criptográfico Nettle e da biblioteca aritmética GMP. Em vez de usar a biblioteca GMP completa, este guia usará mini-gmp, que está incluída no Nettle.
Ao compilar o GnuTLS e o Nettle, é recomendável executar make check após a compilação bem-sucedida. Mesmo que a compilação tenha sido bem-sucedida, os testes às vezes falham. Se este for o caso, os problemas devem ser pesquisados e resolvidos antes de continuar.
Vamos supor que as bibliotecas estáticas do PCRE, Nettle e GnuTLS serão instaladas em $HOME/static-libs. Usaremos PCRE2 10.39, Nettle 3.4.1 e 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"Vamos compilar as bibliotecas estáticas em static-libs-source:
Baixe e compile o 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 ..Baixe e compile o 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 ..Baixe o código-fonte do Zabbix e compile o 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