1 Kompilierungsprobleme

Dies sind die bekannten Probleme im Zusammenhang mit der Zabbix-Kompilierung aus den Quellen. Für alle anderen Fälle siehe die Seite Bekannte Probleme.

Bibliothek an einem nicht standardmäßigen Speicherort

Zabbix ermöglicht es Ihnen, eine Bibliothek an einem nicht standardmäßigen Speicherort anzugeben. Im folgenden Beispiel führt Zabbix curl-config vom angegebenen nicht standardmäßigen Speicherort aus und verwendet dessen Ausgabe, um die richtige libcurl zu ermitteln.

$ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Dies funktioniert, wenn dies die einzige im System installierte libcurl ist, aber möglicherweise nicht, wenn eine weitere libcurl an einem standardmäßigen Speicherort installiert ist (zum Beispiel durch den Paketmanager). Das ist der Fall, wenn Sie für Zabbix eine neuere Version der Bibliothek und für andere Anwendungen die ältere Version benötigen.

Daher funktioniert die Angabe einer Komponente an einem nicht standardmäßigen Speicherort nicht immer, wenn dieselbe Komponente auch an einem standardmäßigen Speicherort vorhanden ist.

Wenn Sie beispielsweise eine neuere libcurl verwenden, die in /usr/local installiert ist, während das libcurl-Paket weiterhin installiert ist, kann Zabbix die falsche Version verwenden und die Kompilierung schlägt fehl:

usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): in function 'zbx_http_convert_to_utf8':
/tmp/zabbix-master/src/libs/zbxhttp/http.c:957: undefined reference to 'curl_easy_header'
collect2: error: ld returned 1 exit status

Hier ist die Funktion curl_easy_header() in der älteren /usr/lib/x86_64-linux-gnu/libcurl.so nicht verfügbar, aber in der neueren /usr/local/lib/libcurl.so vorhanden.

Das Problem liegt in der Reihenfolge der Linker-Flags, und eine Lösung besteht darin, den vollständigen Pfad zur Bibliothek in einer LDFLAGS-Variable anzugeben:

$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Beachten Sie die Option -Wl,--no-as-needed, die auf einigen Systemen erforderlich sein kann (siehe auch: Standard-Linking-Optionen auf Debian-basierten Systemen).

Zu kleine Stackgröße auf einigen Systemen

Wenn Zabbix aufgrund von Stack-Überläufen abstürzt oder einfriert, können Sie die Stackgröße pro Thread mit der Option --with-stacksize erhöhen, wenn Sie die Quellen konfigurieren. Dieses Problem kann auf Systemen mit niedrigen Standardgrenzen für den Thread-Stack auftreten, insbesondere während der Vorverarbeitung, bei der mehrere Threads erstellt werden.

Das folgende Beispiel setzt die Stackgröße auf 512 KB pro Thread:

./configure --enable-server --with-mysql --with-stacksize=512

Sie können die Thread-Stack-Grenzen des Systems zur Laufzeit mit dem Befehl ulimit -s auf Linux-basierten Systemen überprüfen.