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.