3 Компилација Zabbix агента на macOS-у

Преглед

Ова секција показује како компилирати бинарне датотеке Zabbix агента за macOS из извора, са или без TLS-а.

Предуслови

Биће вам потребни алати за развој из командне линије (Xcode није обавезан), Automake, pkg-config и PCRE (v8.x) или PCRE2 (v10.x). Ако желите да компилирате бинарне датотеке агента са TLS-ом, такође ће вам требати OpenSSL или GnuTLS.

Да бисте инсталирали Automake и pkg-config, биће вам потребан Homebrew менаџер пакета са https://brew.sh/. Да бисте га инсталирали, отворите терминал и покрените следећу команду:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Затим инсталирајте Automake и pkg-config:

brew install automake
       brew install 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

Компилирање бинарних датотека агента са статичким библиотекама без TLS-а

Претпоставимо да ће PCRE статичке библиотеке бити инсталиране у $HOME/static-libs. Ми ћемо користити PCRE2 10.39.

PCRE_PREFIX="$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-ом

Када правите OpenSSL, препоручује се да покренете make test након успешног компилирања. Чак и ако је компилирање било успешно, тестови понекад не успеју. Ако се то догоди, проблеме треба истражити и решити пре наставка.

Претпоставимо да ће PCRE и OpenSSL статичке библиотеке бити инсталиране у $HOME/static-libs. Ми ћемо користити PCRE2 10.39 и OpenSSL 1.1.1a.

PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
       OPENSSL_PREFIX="$HOME/static-libs/openssl-1.1.1a"

Хајде да изградимо статичке библиотеке у static-libs-source:

mkdir static-libs-source
       cd 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-ом

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:

mkdir static-libs-source
       cd 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