1 Problemy z kompilacją
To są znane problemy dotyczące kompilacji Zabbix ze źródeł. We wszystkich pozostałych przypadkach zobacz stronę Znane problemy.
Biblioteka w niestandardowej lokalizacji
Zabbix umożliwia określenie biblioteki znajdującej się w niestandardowej lokalizacji. W poniższym przykładzie Zabbix uruchomi curl-config z podanej niestandardowej lokalizacji i użyje jego wyniku do określenia właściwej biblioteki libcurl do użycia.
$ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config
To zadziała, jeśli jest to jedyna zainstalowana w systemie biblioteka libcurl, ale może nie zadziałać, jeśli inna biblioteka libcurl jest zainstalowana w standardowej lokalizacji (na przykład przez menedżer pakietów). Taka sytuacja ma miejsce, gdy potrzebujesz nowszej wersji biblioteki dla Zabbix, a starszej dla innych aplikacji.
Dlatego wskazanie komponentu w niestandardowej lokalizacji nie zawsze zadziała, gdy ten sam komponent istnieje również w standardowej lokalizacji.
Na przykład, jeśli używasz nowszej biblioteki libcurl zainstalowanej w /usr/local, a pakiet libcurl nadal jest zainstalowany, Zabbix może wybrać niewłaściwą wersję i kompilacja zakończy się niepowodzeniem:
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
W tym przypadku funkcja curl_easy_header() nie jest dostępna w starszej bibliotece /usr/lib/x86_64-linux-gnu/libcurl.so, ale jest dostępna w nowszej /usr/local/lib/libcurl.so.
Problem leży w kolejności flag linkera, a jednym z rozwiązań jest podanie pełnej ścieżki do biblioteki w zmiennej LDFLAGS:
$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config
Zwróć uwagę na opcję -Wl,--no-as-needed, która może być wymagana w niektórych systemach (zobacz też: domyślne opcje linkowania w systemach opartych na Debianie).
Zbyt mały rozmiar stosu w niektórych systemach
Jeśli Zabbix ulega awarii lub zawiesza się z powodu przepełnienia stosu, możesz zwiększyć rozmiar stosu dla pojedynczego wątku, używając opcji --with-stacksize podczas konfigurowania źródeł.
Problem ten może wystąpić w systemach z niskimi domyślnymi limitami stosu wątków, zwłaszcza podczas preprocessing, gdy tworzonych jest wiele wątków.
Poniższy przykład ustawia rozmiar stosu na 512 KB na wątek:
./configure --enable-server --with-mysql --with-stacksize=512
Możesz sprawdzić limity stosu wątków systemu w czasie działania za pomocą polecenia ulimit -s w systemach opartych na Linuxie.