[comment]: # ({d8fcd870-0535e4cb})
# 3 Compilant l'agent Zabbix sobre macOS

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

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

Aquesta secció ensenya com crear binaris d'agent Zabbix macOS a partir de fonts amb o sense TLS.

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

[comment]: # ({ad36333f-7e7224fc})
#### Prerrequisits

Us caldran les eines de desenvolupament de línia de comandes (no cal Xcode), Automake, pkg-config i PCRE (v8.x) o PCRE2 (v10.x). Si voleu crear binaris d'agent amb TLS, també haureu de menester OpenSSL o GnuTLS.

Per instal·lar Automake i pkg-config us caldrà el gestor de paquets, Homebrew disponible a <https://brew.sh/>. Per instal·lar-lo, obriu el terminal i executeu l'ordre següent:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Tot seguit, instal·leu Automake i pkg-config:

     brew install automake
     brew install pkg-config

La preparació de les biblioteques PCRE, OpenSSL i GnuTLS depèn de com s'enllaçaran a l'agent.

Si teniu intenció d'executar binaris d'agent en una màquina macOS que ja té aquestes biblioteques, podeu emprar biblioteques precompilades proporcionades per Homebrew. Normalment són màquines macOS que empren Homebrew per crear binaris d'agent Zabbix o amb altres finalitats.

Si els binaris d'agent s'empren a màquines macOS que no tenen la versió compartida de les biblioteques, haureu de compilar les biblioteques estàtiques des de la font i enllaçar l'agent Zabbix amb elles.

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

[comment]: # ({8ee327a1-5e97a918})
#### Construir binaris d'agent amb les biblioteques compartides

Instal·leu PCRE2 (canvieu *pcre2* per *pcre* a les comandes d'aquí sota, si cal):

    brew install pcre2

Quan es compili amb TLS, instal·leu OpenSSL i/o GnuTLS:

    brew install openssl
    brew install gnutls

Descarregueu les fonts de Zabbix :

    git clone https://git.zabbix.com/scm/zbx/zabbix.git

Compileu l'agent sense TLS :

    cd zabbix
    ./bootstrap.sh
    ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
    make
    make install

Compileu l'agent amb OpenSSL :

    cd zabbix
    ./bootstrap.sh
    ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl
    make
    make install

compileu l'agent amb 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})
#### Compilar els binaris d'agent amb biblioteques estàtiques sense TLS

Suposem que les biblioteques estàtiques PCRE siguin installades a `$HOME/static-libs`. Emprarem PCRE2 10.39.

    PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"

Descarregueu i creeu PCRE amb el suport de les propietats d'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

Descarregueu les fonts Zabbix i compileu l'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

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

[comment]: # ({8ba21217-b985c38b})
#### Compilar els binaris de l'agent amb les biblioteques estàtiques emprant OpenSSL

Quan es construeix OpenSSL, es recomana executar `make test` després d'una compilació correcta. Fins i tot si la compilació és correcta, les proves de vegades fallen. Si és així, els problemes s'han d'investigar i resoldre abans de continuar.

Suposem que les biblioteques estàtiques PCRE i OpenSSL s'instal·laran a `$HOME/static-libs`. Farem servir PCRE2 10.39 i OpenSSL 1.1.1a.

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

Poseu les biblioteques estàtiques a `static-libs-source`:

    mkdir static-libs-source
    cd static-libs-source

Descarregueu i creeu PCRE amb les propietats admeses d'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 ..

Descarregueu i creeu 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 ..

Descarregueu les fonts Zabbix i compileu l'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

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

[comment]: # ({d90d667e-8165604b})
#### Creeu binaris d'agent amb biblioteques estàtiques amb GnuTLS

GnuTLS depèn del backend de xifrat de Nettle i de la biblioteca aritmètica GMP. En lloc d'emprar la biblioteca GMP completa, aquesta guia emprarà mini-gmp que s'inclou amb Nettle.

Quan es construeix GnuTLS i Nettle, es recomana executar `make check` després d'una compilació correcta. Fins i tot si la compilació és correcta, les proves de vegades fallen. Si és així, els problemes s'han d'investigar i resoldre abans de continuar.

Suposem que les biblioteques estàtiques PCRE, Nettle i GnuTLS s'instal·laran a `$HOME/static-libs`. Farem anar PCRE2 10.39, Nettle 3.4.1 i 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"

Copiem les biblioteques estàtiques a `static-libs-source` :

    mkdir static-libs-source
    cd static-libs-source

Descarregueu i compileu 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 ..

Descarregueu i compileu 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 ..

Descarregueu les fonts de Zabbix i compileu l'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

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