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.

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 userà il suo output per determinare la libcurl corretta da utilizzare.

$ ./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 si usa una libcurl più recente 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

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

Dimensione dello stack troppo piccola su alcuni sistemi

Se Zabbix va in crash 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, soprattutto 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.