סעיף זה מדגים כיצד לבנות קבצים בינאריים של סוכן 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:
הכנת ספריות PCRE, OpenSSL ו-GnuTLS תלויה בדרך שבה הן יהיו מקושרים לסוכן.
אם אתה מתכוון להפעיל קבצים בינאריים של סוכן על מכונת macOS שכבר יש בספריות אלו, אתה יכול להשתמש בספריות מהודרות מראש שמסופקות על ידי בירה ביתית. אלה בדרך כלל מכונות macOS שמשתמשות ב-Homebrew עבור בניית קבצים בינאריים של סוכן Zabbix או למטרות אחרות.
אם ישתמשו בקבצים בינאריים של סוכן במכונות macOS שאין להם את גרסה משותפת של ספריות, עליך להרכיב ספריות סטטיות מהן מקורות וקשר איתם את סוכן Zabbix.
התקן את PCRE2 (החלף את pcre2 ב-pcre בפקודות למטה, במידת הצורך):
בעת בנייה עם TLS, התקן את OpenSSL ו/או GnuTLS:
הורד את מקור Zabbix:
בניית סוכן ללא TLS:
$ CD zabbix
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
$ לעשות
$ לעשות התקנה
בניית סוכן עם OpenSSL:
$ CD zabbix
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl
$ לעשות
$ לעשות התקנה
בניית סוכן עם GnuTLS:
$ cd zabbix-source/
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-gnutls=/usr/local/opt/gnutls
$ לעשות
$ לעשות התקנה
בוא נניח שספריות סטטיות 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
$ לעשות
$ לעשות צ'ק
$ לעשות התקנה
הורד את המקור של 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"
$ לעשות
$ לעשות התקנה
בעת בניית 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
$ לעשות
$ לעשות צ'ק
$ לעשות התקנה
$ 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 -שיטה darwin64-x86_64-cc
$ לעשות
$ לעשות מבחן
$ 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"
$ לעשות
$ לעשות התקנה
GnuTLS תלוי ב-Crypto Backend של Nettle ובספרייה האריתמטית של GMP. במקום להשתמש בספריית GMP מלאה, מדריך זה ישתמש ב-mini-gmp כלומר כלול בסרפד.
בעת בניית 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 סרפד-3.4.1
$ ./configure --prefix="$NETTLE_PREFIX" --enable-static --disable-shared --disable-documentation --disable-assembler --enable-x86-aesni --enable-mini-gmp
$ לעשות
$ לעשות צ'ק
$ לעשות התקנה
$ 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
$ לעשות
$ לעשות צ'ק
$ לעשות התקנה
$ 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"
$ לעשות
$ לעשות התקנה