Skip to content

Glaber — Libraries and Dependencies

Русская версия: LIBRARIES_AND_DEPENDENCIES_ru.md

This document lists external libraries and dependencies used by the Glaber project, grouped by language and role. It is derived from the build system (configure.ac, m4/*.m4), packaging (build/*/SPECS/glaber.spec), UI manifests (ui/composer.json, ui/package.json), and bundled sources in the repository.

Last reviewed: 2026-05-20 (Glaber 6.4.11 per configure.ac)


Summary

Area Primary mechanism Notes
C/C++ daemons (server, proxy, agent) Autoconf + system libraries Most features are optional via ./configure flags
Bundled C Duktape in-tree Embedded scripting engine
Go (agent2, web service) Go toolchain + CGO → C libs Source expected under src/go/ (may be absent in partial checkouts)
Java (gateway) JDK + vendored JARs JARs in src/zabbix_java/lib/
PHP (web UI) OS PHP extensions + Composer Composer deps vendored in ui/vendor/
JavaScript (UI build) npm Build-time only (Vite, Vue, Tailwind)
Python Optional tooling Ansible appliance roles, analysis scripts — not runtime for core product

C and C++

Build toolchain

Required to compile server, proxy, agent, sender, get, and related binaries:

Tool Purpose
GCC or Clang (g++, C++17 default via --with-cxx-standard) C/C++ compilation
GNU Autoconf, Automake, Libtool ./configure / make
GNU Make Build orchestration
pkg-config Optional; used when available for some libraries
ranlib Static library indexing

Configure options: --enable-server, --enable-proxy, --enable-agent, --enable-agent2, --enable-webservice, --enable-java, --enable-ipv6, --enable-static, --with-cxx-standard=17|20|23.

Required libraries (typical server/proxy/agent build)

These are linked or checked for most daemon builds:

Library Role Configure / detection
zlib Compression (server/proxy communication) --with-zlib (required when server/proxy enabled)
libpthread Threading (PTHREAD_PROCESS_SHARED) --with-libpthread (required when server/proxy enabled)
libiconv Character set conversion --with-iconv (required)
libpcre or libpcre2 Regular expressions (default: PCRE; PCRE2 via --with-libpcre2) --with-libpcre / --with-libpcre2
libresolv DNS lookups Automatic (configure fails if missing)
libm, libdl, libpthread Math, dynamic loading, threads AC_CHECK_LIB / AC_SEARCH_LIBS
Platform libs e.g. libsocket, libnsl, librt, libkvm, libexecinfo, libperfstat, libdevstat, libjail OS-specific autodetection

Database backends (server/proxy — exactly one)

Library Min. version (configure) Configure flag
MySQL/MariaDB client (libmysqlclient / mariadb-connector-c) via mysql_config --with-mysql
PostgreSQL client (libpq) 9.2+ --with-postgresql
Oracle OCI 10.0+ --with-oracle
SQLite3 --with-sqlite3 (proxy only; not valid as server main DB)

RPM build deps (AlmaLinux 8 spec): mariadb-connector-c-devel, postgresql-devel >= 12.0, sqlite-devel.

Optional libraries (server/proxy)

Library Min. version Configure flag Feature
libxml2 --with-libxml2 VMware / XML-related monitoring
unixODBC --with-unixodbc ODBC checks
Net-SNMP 5.3.0 --with-net-snmp SNMP monitoring
libssh2 1.0.0 --with-ssh2 SSH checks (mutually exclusive with libssh)
libssh 0.6.0 (0.7.0 noted in messages) --with-ssh SSH checks
OpenIPMI --with-openipmi IPMI monitoring
libevent --with-libevent IPC services (required when IPMI/server/proxy IPC enabled)
GnuTLS 3.1.18 --with-gnutls TLS (mutually exclusive with OpenSSL)
OpenSSL (libssl, libcrypto) 1.0.1 --with-openssl TLS (mutually exclusive with GnuTLS)
OpenLDAP --with-ldap LDAP authentication / sync
libcurl 7.13.1 --with-libcurl Web monitoring, HTTP agent checks
Boost (boost_filesystem) --with-boost Optional; filesystem paths

RPM build deps for optional server features: libxml2-devel, libevent-devel, openssl-devel, gnutls-devel, libcurl-devel, libssh-devel, net-snmp-devel, unixODBC-devel, openldap-devel, OpenIPMI, pcre-devel or pcre2-devel.

Optional libraries (agent)

Library Min. version Configure flag Feature
libmodbus 3.0.0 --with-libmodbus Modbus monitoring
libcurl 7.13.1 --with-libcurl Web monitoring (agent 2.0+)
TLS libs same as server --with-openssl or --with-gnutls Encrypted agent communication
OpenLDAP --with-ldap LDAP-related agent features

Test-only C libraries

Library Configure flag Purpose
cmocka --with-cmocka Unit tests (when m4/conf_tests.m4 is present)
libyaml --with-libyaml Test / config tooling when enabled

Bundled C library (in-tree)

Library Version Location License
Duktape 2.7.0 src/libs/zbxembed/duktape.c, duktape.h Duktape license (MIT-style)

Used by the embedded scripting engine (zbxembed, zabbix_js, preprocessing, scripts).

Standard C/POSIX headers

The build probes a large set of system headers (stdio, pthread, sockets, resolv.h, platform-specific sys/*, Windows APIs when cross-compiling, etc.). See configure.ac (AC_CHECK_HEADERS).


Go

Used when building Agent 2 (--enable-agent2) and Web Service (--enable-webservice).

Requirement Notes
Go compiler (go in PATH) Required; configure errors if missing
CGO Links against Glaber C static libraries and TLS/PCRE flags (CGO_CFLAGS, CGO_LDFLAGS in configure.ac)
C compiler Same as agent build for CGO
Thread-local storage Agent2/webservice require compiler support for _Thread_local

Go source is expected under src/go/ (referenced in Makefile.am dist-hook and GOWORKDIR). This directory may be missing in partial clones; a full release tree includes Agent2/Web Service sources there.

External Go modules (when src/go is present) are defined in that tree’s go.mod — run go list -m all in src/go after checkout for an exact module list.


Java

Java gateway (--enable-java): JMX and internal checks.

Build/runtime

Requirement Notes
JDK javac, jar in PATH; RPM: java-devel >= 1.6.0
JRE Runtime: java-headless >= 1.6.0

Bundled JAR dependencies (src/zabbix_java/lib/)

JAR Purpose
android-json-4.3_r3.1.jar org.json JSON parsing (AOSP libcore JSON)
slf4j-api-2.0.16.jar Logging API
logback-core-1.5.16.jar Logback core
logback-classic-1.5.16.jar Logback implementation

Test-only: junit-4.8.2.jar (under tests/, not shipped in production install).

Standard JDK modules used in sources: javax.management, java.net, java.util.concurrent, etc.


PHP

Web frontend (ui/): served via PHP-FPM or Apache with PHP.

Runtime — PHP version and extensions

From ui/include/classes/setup/CFrontendSetup.php and RPM glaber-web-deps:

Requirement Details
PHP >= 7.4.0
php-gd >= 2.0, PNG/JPEG/FreeType (GIF warning if missing)
php-bcmath Required
php-mbstring Required; mbstring.func_overload must not break string functions
php-xml / libxml libxml >= 2.6.15
php-xmlwriter, php-xmlreader Required
php-sockets Required
php-ctype Required
php-session Required
php-gettext Required
php-ldap Recommended (warning if missing)
php-openssl Recommended (SAML, HTTPS)
Database driver One of: mysqli (MySQL), pgsql (PostgreSQL), oci8 (Oracle)

RPM packages: php-fpm, php-gd, php-bcmath, php-mbstring, php-xml, php-ldap, php-json, plus php-mysqlnd or php-pgsql per variant.

PHP ini expectations (setup wizard): memory_limit >= 128M, post_max_size >= 16M, upload_max_filesize >= 2M, max_execution_time / max_input_time >= 300, arg_separator.output = &.

Composer dependencies (ui/composer.json)

Installed under ui/vendor/ (commit vendored):

Package Version constraint Purpose
symfony/yaml v5.1.3 YAML parsing
onelogin/php-saml ^4.0 SAML SSO

Transitive (vendored):

Package Version (installed) Role
robrichards/xmlseclibs 3.1.1 XML digital signatures (SAML)
symfony/deprecation-contracts v2.5.1 Symfony deprecation helpers
symfony/polyfill-ctype v1.25.0 ctype_* polyfill

Install/update: composer install in ui/ (see ui/composer.json).


JavaScript / TypeScript (UI build)

Build-time only — assets built with npm; not required on production PHP servers unless you rebuild the UI.

Defined in ui/package.json:

Runtime dependencies (bundled into frontend build)

Package Version Purpose
vue ^3.5.25 UI components
@fortawesome/vue-fontawesome ^3.1.3 Icons
@fortawesome/free-solid-svg-icons ^7.1.0 Icon glyphs

Dev dependencies

Package Version Purpose
vite ^7.3.0 Bundler / dev server
@vitejs/plugin-vue ^6.0.3 Vue SFC support
tailwindcss ^3.4.0 CSS utility framework

Scripts: npm run build, npm run build:tailwind, npm run build:all (see ui/package.json).

Lockfile: ui/package-lock.json (includes transitive deps such as esbuild, PostCSS, etc.).

Node.js is required to run npm; use a current LTS release compatible with Vite 7.

Legacy Sass theming may still exist under sass/ for older styles; the modern UI path uses Tailwind + Vite.


Python

Python is not part of the core Glaber server or web UI runtime. It appears in:

Context Packages / usage
tests/vcdump_analyze/ python3 for vcdump_items_analyze.py
Ansible appliance (build/appliance/run/ansible/) python3-psycopg2, python3-mysqldb on target hosts for DB automation
General automation Ansible playbooks (not pinned in-repo as requirements.txt)

Operating system and deployment dependencies

These are not linked at compile time but are required or commonly used in packages and appliances:

Component Used for
systemd Service units (glaber-server, glaber-proxy, glaber-agent, etc.)
nginx or httpd Frontend reverse proxy (glaber-nginx.conf, Apache config package)
php-fpm PHP FastCGI
fping ICMP checks (server/proxy RPM Requires)
logrotate Log rotation (agent package)
dejavu-sans-fonts Web UI fonts
ClickHouse Optional history store in Docker appliance (build/appliance/run/docker/)
MySQL/MariaDB or PostgreSQL Configuration database
Hurl Appliance testing (hurl in ansible vars)

Docker Compose appliance also references images such as yandex/clickhouse-server:21.3.20 (see build/appliance/run/docker/docker-compose.yml).


Configure quick reference

Common ./configure flags for optional C/C++ features:

--with-mysql|--with-postgresql|--with-oracle|--with-sqlite3
--with-libxml2 --with-unixodbc --with-net-snmp
--with-ssh|--with-ssh2
--with-openipmi --with-libevent
--with-openssl|--with-gnutls
--with-ldap --with-libcurl
--with-libmodbus          # agent
--with-libpcre2           # use PCRE2 instead of PCRE
--with-boost
--enable-agent2 --enable-webservice   # requires Go
--enable-java                         # requires JDK

Run ./configure --help after autogen.sh for the full list.


Source of truth

Topic Location
C/C++ optional deps configure.ac, m4/*.m4
RPM build requires build/almalinux/8/SPECS/glaber.spec, build/altlinux/*/SPECS/glaber.spec
PHP Composer ui/composer.json, ui/vendor/composer/installed.json
PHP extensions ui/include/classes/setup/CFrontendSetup.php
npm ui/package.json, ui/package-lock.json
Java JARs src/zabbix_java/Makefile.am, src/zabbix_java/lib/
Bundled Duktape src/libs/zbxembed/
Appliance stack build/appliance/run/docker/, build/appliance/run/ansible/

When in doubt, prefer the files above over this document; regenerate or extend this page when adding new optional components.