1. Проблемы при компиляции
Это известные проблемы, связанные с компиляцией Zabbix из исходных кодов. Во всех остальных случаях смотрите страницу Известные проблемы.
Библиотека в нестандартном месте
Zabbix позволяет указать библиотеку, расположенную в нестандартном месте. В приведённом ниже примере Zabbix запустит curl-config из указанного нестандартного местоположения и использует его вывод для определения правильной используемой библиотеки libcurl.
$ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config
Это будет работать, если это единственная библиотека libcurl, установленная в системе, но может не сработать, если имеется другая библиотека libcurl, установленная в стандартном месте (например, с помощью менеджера пакетов). Так бывает, когда вам нужна более новая версия библиотеки для Zabbix и более старая для остальных приложений.
Поэтому указание компонента в нестандартном месте не всегда будет работать, если тот же компонент существует и в стандартном месте.
Например, если вы используете более новую версию библиотеки libcurl, установленную в /usr/local, но при этом установлен ещё пакет libcurl, Zabbix может взять неправильную библиотеку, и компиляция завершится неудачно:
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
Здесь функция curl_easy_header() недоступна в старой версии /usr/lib/x86_64-linux-gnu/libcurl.so, но доступна в более новой /usr/local/lib/libcurl.so.
Проблема заключается в порядке флагов линкера, и одно из решений — указать полный путь к библиотеке в переменной LDFLAGS:
$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config
Обратите внимание на параметр -Wl,--no-as-needed, который может потребоваться в некоторых системах (см. также: параметры связывания по умолчанию в системах на базе Debian [en]).
Слишком маленький размер стека на некоторых системах
Если Zabbix аварийно завершает работу или зависает из-за переполнения стека, вы можете увеличить размер стека для каждого потока с помощью параметра --with-stacksize при настройке исходных кодов.
Эта проблема может возникать на системах с низкими значениями ограничения размера стека потоков по умолчанию, особенно во время предобработки, когда создается несколько потоков.
Следующий пример задает размер стека 512 КБ на поток:
./configure --enable-server --with-mysql --with-stacksize=512
Вы можете проверить ограничения размера стека потоков в системе во время выполнения с помощью команды ulimit -s в системах на базе Linux.