Ова секција показује како компилирати бинарне датотеке Zabbix агента за macOS из извора, са или без TLS-а.
Биће вам потребни алати за развој из командне линије (Xcode није обавезан), Automake, pkg-config и PCRE (v8.x) или PCRE2 (v10.x). Ако желите да компилирате бинарне датотеке агента са TLS-ом, такође ће вам требати OpenSSL или GnuTLS.
Да бисте инсталирали Automake и pkg-config, биће вам потребан Homebrew менаџер пакета са https://brew.sh/. Да бисте га инсталирали, отворите терминал и покрените следећу команду:
Затим инсталирајте Automake и pkg-config:
Припрема PCRE, OpenSSL и GnuTLS библиотека зависи од начина на који ће бити повезане са агентом.
Ако намеравате да покренете бинарне датотеке агента на macOS машини која већ има ове библиотеке, можете користити унапред компилиране библиотеке које обезбеђује Homebrew. То су обично macOS машине које користе Homebrew за прављење бинарних датотека Zabbix агента или за друге сврхе.
Ако ће се бинарне датотеке агената користити на macOS машинама које немају дељене верзије библиотека, требало би да саставите статичке библиотеке из извора и повежете Zabbix агента са њима.
Инсталирајте PCRE2 (замените pcre2 са pcre у наредбама испод, ако је потребно):
brew install pcre2
Када компилирате са TLS-ом, инсталирајте OpenSSL и/или GnuTLS:
brew install openssl brew install gnutls
Преузмите изворни код Zabbix-а:
git clone https://git.zabbix.com/scm/zbx/zabbix.git
Компилирање агента без TLS-а:
cd zabbix ./bootstrap.sh ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 make make install
Компилирање агента са OpenSSL-ом:
cd zabbix ./bootstrap.sh ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl make make install
Компилирање агента са 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
Претпоставимо да ће PCRE статичке библиотеке бити инсталиране у $HOME/static-libs
. Ми ћемо користити PCRE2 10.39.
Преузмите и компајлирајте PCRE са подршком за 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
Преузмите изворни код Zabbix-а и компилирајте агента:
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
Када правите OpenSSL, препоручује се да покренете make test
након успешног компилирања. Чак и ако је компилирање било успешно, тестови понекад не успеју. Ако се то догоди, проблеме треба истражити и решити пре наставка.
Претпоставимо да ће PCRE и OpenSSL статичке библиотеке бити инсталиране у $HOME/static-libs
. Ми ћемо користити PCRE2 10.39 и OpenSSL 1.1.1a.
Хајде да изградимо статичке библиотеке у static-libs-source
:
Преузмите и компилирајте PCRE са подршком за 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 ..
Преузмите и компилирајте 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 ..
Преузмите Zabbix изворни код и компилирајте агента:
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
GnuTLS зависи од Nettle криптографског бекенда и GMP аритметичке библиотеке. Уместо коришћења комплетне GMP библиотеке, овај водич ће користити mini-gmp који је укључен у Nettle.
Када компилирате GnuTLS и Nettle, препоручује се да покренете make check
након успешне изградње. Чак и ако је компајлирање било успешно, тестови понекад не успеју. Ако је то случај, проблеме треба истражити и решити пре него што наставите.
Претпоставимо да ће PCRE, Nettle и GnuTLS статичке библиотеке бити инсталиране у $HOME/static-libs
. Користићемо PCRE2 10.39, Nettle 3.4.1 и 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"
Хајде да направимо статичке библиотеке у static-libs-source
:
Преузми и компилирајте 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 ..
Преузми и компилирајте 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 ..
Преузмите Zabbix изворни код и компилирајте агента::
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