- Building Zabbix agent on macOS
- Przegląd
- Wymagania wstępne
- Budowanie plików binarnych agent z bibliotekami współdzielonymi
- Budowanie plików binarnych agent z bibliotekami statycznymi bez TLS
- Budowanie plików binarnych agent z bibliotekami statycznymi przy użyciu OpenSSL
- Budowanie plików binarnych agent z bibliotekami statycznymi przy użyciu GnuTLS
Building Zabbix agent on macOS
Przegląd
Ta sekcja pokazuje, jak zbudować binaria agenta Zabbix dla systemu macOS ze źródeł, z obsługą TLS lub bez niej.
Wymagania wstępne
Będziesz potrzebować narzędzi deweloperskich wiersza poleceń (Xcode nie jest wymagany), Automake, pkg-config oraz PCRE (v8.x) lub PCRE2 (v10.x). Jeśli chcesz zbudować pliki binarne agent z obsługą TLS, będziesz także potrzebować OpenSSL lub GnuTLS.
Aby zainstalować Automake i pkg-config, będziesz potrzebować menedżera pakietów Homebrew ze strony https://brew.sh/. Aby go zainstalować, otwórz terminal i uruchom następujące polecenie:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Następnie zainstaluj Automake i pkg-config:
brew install automake
brew install pkg-config
Przygotowanie bibliotek PCRE, OpenSSL i GnuTLS zależy od sposobu, w jaki będą one linkowane z agent.
Jeśli zamierzasz uruchamiać pliki binarne agent na komputerze z macOS, który ma już te biblioteki, możesz użyć wstępnie skompilowanych bibliotek dostarczanych przez Homebrew. Zwykle są to komputery z macOS, na których Homebrew jest używany do budowania plików binarnych agent Zabbix lub do innych celów.
Jeśli pliki binarne agent będą używane na komputerach z macOS, które nie mają współdzielonej wersji bibliotek, powinieneś skompilować biblioteki statyczne ze źródeł i połączyć z nimi agent Zabbix.
Budowanie plików binarnych agent z bibliotekami współdzielonymi
Zainstaluj PCRE2 (w razie potrzeby zastąp pcre2 przez pcre w poniższych poleceniach):
brew install pcre2
Podczas budowania z TLS zainstaluj OpenSSL i/lub GnuTLS:
brew install openssl
brew install gnutls
Pobierz kod źródłowy Zabbix:
git clone https://git.zabbix.com/scm/zbx/zabbix.git
Zbuduj agent bez TLS:
cd zabbix
./bootstrap.sh
./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
make
make install
Zbuduj agent z OpenSSL:
cd zabbix
./bootstrap.sh
./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl
make
make install
Zbuduj agent z 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
Budowanie plików binarnych agent z bibliotekami statycznymi bez TLS
Załóżmy, że statyczne biblioteki PCRE zostaną zainstalowane w
$HOME/static-libs. Użyjemy PCRE2 10.39.
PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
Pobierz i zbuduj PCRE z obsługą właściwości 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
Pobierz kod źródłowy Zabbix i zbuduj 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
Budowanie plików binarnych agent z bibliotekami statycznymi przy użyciu OpenSSL
Podczas budowania OpenSSL zaleca się uruchomienie make test po
pomyślnym zakończeniu kompilacji. Nawet jeśli kompilacja zakończyła się
sukcesem, testy czasami kończą się niepowodzeniem. W takim przypadku
należy zbadać problemy i je rozwiązać przed kontynuowaniem.
Załóżmy, że statyczne biblioteki PCRE i OpenSSL zostaną zainstalowane w
$HOME/static-libs. Użyjemy PCRE2 10.39 oraz OpenSSL 1.1.1a.
PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
OPENSSL_PREFIX="$HOME/static-libs/openssl-1.1.1a"
Zbudujmy biblioteki statyczne w static-libs-source:
mkdir static-libs-source
cd static-libs-source
Pobierz i zbuduj PCRE z obsługą właściwości 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 ..
Pobierz i zbuduj 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 ..
Pobierz kod źródłowy Zabbix i zbuduj 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
Budowanie plików binarnych agent z bibliotekami statycznymi przy użyciu GnuTLS
GnuTLS zależy od backendu kryptograficznego Nettle oraz biblioteki arytmetycznej GMP. Zamiast używać pełnej biblioteki GMP, ten przewodnik wykorzystuje mini-gmp, które jest dołączone do Nettle.
Podczas budowania GnuTLS i Nettle zaleca się uruchomienie make check
po pomyślnym zakończeniu kompilacji. Nawet jeśli kompilacja zakończyła się powodzeniem,
testy czasami kończą się niepowodzeniem. W takim przypadku należy zbadać problemy
i rozwiązać je przed kontynuowaniem.
Załóżmy, że statyczne biblioteki PCRE, Nettle i GnuTLS zostaną
zainstalowane w $HOME/static-libs. Użyjemy PCRE2 10.39, Nettle 3.4.1
oraz 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"
Zbudujmy biblioteki statyczne w static-libs-source:
mkdir static-libs-source
cd static-libs-source
Pobierz i zbuduj 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 ..
Pobierz i zbuduj 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 ..
Pobierz kod źródłowy Zabbix i zbuduj 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