1 Problemy z kompilacją
Poniżej przedstawiono znane problemy dotyczące kompilacji Zabbix ze źródeł. We wszystkich innych przypadkach zobacz stronę Znane problemy.
Kompilacja agent Zabbix na HP-UX
Jeśli zainstalujesz bibliotekę PCRE z popularnej witryny pakietów HP-UX
http://hpux.connect.org.uk (na przykład z pliku pcre-8.42-ia64_64-11.31.depot), w katalogu /usr/local/lib/hpux64 zostanie zainstalowana tylko 64-bitowa wersja biblioteki.
W takim przypadku, aby kompilacja agent zakończyła się powodzeniem, dla skryptu configure potrzebna jest niestandardowa opcja, na przykład:
CFLAGS="+DD64" ./configure --enable-agent --with-libpcre-include=/usr/local/include --with-libpcre-lib=/usr/local/lib/hpux64
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 biblioteka libcurl zainstalowana w systemie, 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 określenie komponentu w niestandardowej lokalizacji nie zawsze będzie dział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ą bibliotekę 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
Tutaj funkcja curl_easy_header() nie jest dostępna w starszej /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 na 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ć na 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, używając polecenia ulimit -s w systemach opartych na Linuxie.