Compilando o agent Zabbix no macOS
Visão geral
Esta seção demonstra como compilar os binários do agent Zabbix para macOS a partir do código-fonte 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 você quiser compilar os 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:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
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 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, são máquinas macOS que usam o Homebrew para compilar os 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.
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 PCRE2 10.39 e 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á o mini-gmp, que está incluído 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