[comment]: # translation:outdated

[comment]: # ({d8fcd870-0535e4cb})
# 3 Компилација Zabbix агента на macOS-у

[comment]: # ({/d8fcd870-0535e4cb})

[comment]: # ({161fafaa-161fafaa})
#### Преглед

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

[comment]: # ({/161fafaa-161fafaa})

[comment]: # ({5d4dd66b-7e7224fc})
#### Предуслови

Биће вам потребни алати за развој из командне линије (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 агента са њима.

[comment]: # ({/5d4dd66b-7e7224fc})

[comment]: # ({8ee327a1-5e97a918})
#### Компилирање бинарних датотека агента са дељеним библиотекама

Инсталирајте 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

[comment]: # ({/8ee327a1-5e97a918})

[comment]: # ({d64f422c-90fe7eb9})
#### Компилирање бинарних датотека агента са статичким библиотекама без 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

[comment]: # ({/d64f422c-90fe7eb9})

[comment]: # ({8ba21217-b985c38b})
#### Компилирање бинарних датотека агента са статистичким библиотекама са 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

[comment]: # ({/8ba21217-b985c38b})

[comment]: # ({d90d667e-8165604b})
#### Изградња бинарних датотека агента са статичким библиотекама са 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

[comment]: # ({/d90d667e-8165604b})
