Estos son los problemas conocidos relacionados con la compilación de Zabbix desde fuentes. Para todos los demás casos, consulte la página de Problemas conocidos.
Zabbix permite especificar una biblioteca ubicada en una ubicación no estándar. En el siguiente ejemplo, Zabbix ejecutará curl-config
desde la ubicación no estándar especificada y usará su salida para determinar la libcurl correcta a utilizar.
Esto funcionará si es la única libcurl instalada en el sistema, pero podría no funcionar si hay otra libcurl instalada en una ubicación estándar (por el gestor de paquetes, por ejemplo). Este es el caso cuando necesita una versión más reciente de la biblioteca para Zabbix y la versión anterior para otras aplicaciones.
Por lo tanto, especificar un componente en una ubicación no estándar no siempre funcionará cuando el mismo componente también exista en una ubicación estándar.
Por ejemplo, si utiliza una libcurl más reciente instalada en /usr/local
con el paquete libcurl aún instalado, Zabbix podría seleccionar la incorrecta y la compilación fallará:
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
Aquí, la función curl_easy_header()
no está disponible en la antigua /usr/lib/x86_64-linux-gnu/libcurl.so
, pero sí está disponible en la nueva /usr/local/lib/libcurl.so
.
El problema radica en el orden de las banderas del enlazador, y una solución es especificar la ruta completa a la biblioteca en una variable LDFLAGS:
$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config
Tenga en cuenta la opción -Wl,--no-as-needed
, que podría ser necesaria en algunos sistemas (ver también: opciones de enlace predeterminadas en sistemas basados en Debian).
Si Zabbix se bloquea o se congela debido a desbordamientos de pila, puede aumentar el tamaño de pila por hilo utilizando la opción --with-stacksize
al configurar las fuentes. Este problema puede ocurrir en sistemas con límites de pila por hilo bajos por defecto, especialmente durante el preprocesamiento, donde se crean múltiples hilos.
El siguiente ejemplo establece el tamaño de pila en 512 KB por hilo:
Puede comprobar los límites de pila por hilo del sistema en tiempo de ejecución utilizando el comando ulimit -s
en sistemas basados en Linux.