3 Compilando o agent do Zabbix no macOS
Visão geral
Esta seção demonstra como construir binários do agent do Zabbix para macOS a partir dos fontes com ou sem TLS.
Pré-requisitos
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 quiser compilar binários do agent com TLS, também precisará de OpenSSL ou GnuTLS.
Para instalar o Automake e o pkg-config, você precisará do gerenciador de pacotes Homebrew em https://brew.sh/. Para instalá-lo, abra o terminal e execute o seguinte comando:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Em seguida, instale o Automake e o pkg-config:
brew install automake
brew install 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 binários do agent em uma máquina macOS que já tenha essas bibliotecas, pode usar bibliotecas pré-compiladas fornecidas pelo Homebrew. Normalmente, essas são máquinas macOS que usam o Homebrew para compilar binários do Zabbix agent ou para outros fins.
Se os binários do agent forem usados em máquinas macOS que não tenham a versão compartilhada das bibliotecas, você deverá compilar bibliotecas estáticas a partir do código-fonte e vincular o Zabbix agent a elas.
Compilando binários do agent com bibliotecas compartilhadas
Instale o PCRE2 (substitua pcre2 por pcre nos comandos abaixo, se necessário):
brew install pcre2
Ao compilar com TLS, instale OpenSSL e/ou GnuTLS:
brew install openssl
brew install gnutls
Baixe o código-fonte do Zabbix:
git clone https://git.zabbix.com/scm/zbx/zabbix.git
Compile o agent sem TLS:
cd zabbix
./bootstrap.sh
./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
make
make install
Compile 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 install
Compile 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 install
Compilando binários do agent com bibliotecas estáticas sem TLS
Vamos supor que as bibliotecas estáticas do PCRE serão instaladas em
$HOME/static-libs. Usaremos o PCRE2 10.39.
PCRE_PREFIX="$HOME/static-libs/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 install
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"
make
make install
Compilando binários do agent com bibliotecas estáticas com OpenSSL
Ao 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.
PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
OPENSSL_PREFIX="$HOME/static-libs/openssl-1.1.1a"
Vamos compilar as bibliotecas estáticas em static-libs-source:
mkdir static-libs-source
cd 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 install
Compilando binários do agent com bibliotecas estáticas com GnuTLS
O 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:
mkdir static-libs-source
cd 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