1 Problemi di compilazione

Questi sono i problemi noti relativi alla compilazione di Zabbix dai sorgenti. Per tutti gli altri casi, vedere la pagina Problemi noti.

Compilazione di Zabbix agent su HP-UX

Se installi la libreria PCRE dal popolare sito di pacchetti HP-UX http://hpux.connect.org.uk (ad esempio, dal file pcre-8.42-ia64_64-11.31.depot), verrà installata solo la versione a 64 bit della libreria nella directory /usr/local/lib/hpux64.

In questo caso, per una compilazione corretta di agent, è necessaria un'opzione personalizzata per lo script configure, ad esempio:

CFLAGS="+DD64" ./configure --enable-agent --with-libpcre-include=/usr/local/include --with-libpcre-lib=/usr/local/lib/hpux64

Libreria in una posizione non standard

Zabbix consente di specificare una libreria situata in una posizione non standard. Nell'esempio seguente, Zabbix eseguirà curl-config dalla posizione non standard specificata e utilizzerà il suo output per determinare la corretta libcurl da usare.

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

Questo funzionerà se è l'unica libcurl installata nel sistema, ma potrebbe non funzionare se esiste un'altra libcurl installata in una posizione standard (ad esempio, tramite il gestore di pacchetti). È il caso in cui è necessaria una versione più recente della libreria per Zabbix e quella più vecchia per altre applicazioni.

Pertanto, specificare un componente in una posizione non standard non funzionerà sempre quando lo stesso componente esiste anche in una posizione standard.

Ad esempio, se utilizzi una versione più recente di libcurl installata in /usr/local mentre il pacchetto libcurl è ancora installato, Zabbix potrebbe individuare quella sbagliata e la compilazione fallirà:

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

Qui, la funzione curl_easy_header() non è disponibile nella vecchia /usr/lib/x86_64-linux-gnu/libcurl.so, ma è disponibile nella più recente /usr/local/lib/libcurl.so.

Il problema risiede nell'ordine dei flag del linker, e una soluzione consiste nel specificare il percorso completo della libreria in una variabile LDFLAGS:

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

Nota l'opzione -Wl,--no-as-needed, che potrebbe essere necessaria su alcuni sistemi (vedi anche: opzioni di linking predefinite sui sistemi basati su Debian).

Dimensione dello stack troppo piccola su alcuni sistemi

Se Zabbix si arresta in modo anomalo o si blocca a causa di overflow dello stack, è possibile aumentare la dimensione dello stack per thread usando l'opzione --with-stacksize durante la configurazione dei sorgenti. Questo problema può verificarsi su sistemi con limiti predefiniti bassi per lo stack dei thread, in particolare durante la preprocessing, quando vengono creati più thread.

L'esempio seguente imposta la dimensione dello stack a 512 KB per thread:

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

È possibile verificare i limiti dello stack dei thread del sistema in fase di esecuzione usando il comando ulimit -s sui sistemi basati su Linux.