1 Kompilēšanas problēmas

Šīs ir zināmās problēmas, kas saistītas ar Zabbix kompilēšanu no avota koda. Visos citos gadījumos skatiet lapu Zināmās problēmas.

Zabbix aģenta kompilēšana HP-UX

Ja instalējat PCRE bibliotēku no populārās HP-UX pakotņu vietnes http://hpux.connect.org.uk (piemēram, no faila pcre-8.42-ia64_64-11.31.depot), bibliotēkas tiks instalēta tikai 64 bitu versija direktorijā /usr/local/lib/hpux64.

Šādā gadījumā veiksmīgai aģenta kompilēšanai configure skriptam ir nepieciešama pielāgota opcija, piemēram:

CFLAGS="+DD64" ./configure --enable-agent --with-libpcre-include=/usr/local/include --with-libpcre-lib=/usr/local/lib/hpux64

Bibliotēka nestandarta atrašanās vietā

Zabbix ļauj norādīt bibliotēku, kas atrodas nestandarta atrašanās vietā. Tālāk redzamajā piemērā Zabbix palaidīs curl-config no norādītās nestandarta atrašanās vietas un izmantos tā izvadi, lai noteiktu pareizo izmantojamo libcurl.

$ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Tas darbosies, ja tā ir vienīgā sistēmā instalētā libcurl, taču var nedarboties, ja standarta atrašanās vietā jau ir instalēta cita libcurl (piemēram, ar pakotņu pārvaldnieku). Tā var būt situācija, kad Zabbix vajadzīga jaunāka bibliotēkas versija, bet citām lietotnēm - vecākā.

Tāpēc komponenta norādīšana nestandarta atrašanās vietā ne vienmēr darbosies, ja tas pats komponents pastāv arī standarta atrašanās vietā.

Piemēram, ja izmantojat jaunāku libcurl, kas instalēta /usr/local, bet libcurl pakotne joprojām ir instalēta, Zabbix var paņemt nepareizo versiju un kompilēšana neizdosies:

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

Šeit funkcija curl_easy_header() nav pieejama vecākajā /usr/lib/x86_64-linux-gnu/libcurl.so, bet ir pieejama jaunākajā /usr/local/lib/libcurl.so.

Problēma ir saistīta ar linkera karogu secību, un viens no risinājumiem ir norādīt pilnu ceļu uz bibliotēku LDFLAGS mainīgajā:

$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Ņemiet vērā opciju -Wl,--no-as-needed, kas dažās sistēmās var būt nepieciešama (skatiet arī: noklusējuma saistīšanas opcijas Debian-based sistēmās).

Steka izmērs dažās sistēmās ir pārāk mazs

Ja Zabbix avarē vai sasalst steka pārpildes dēļ, varat palielināt katra pavediena steka izmēru, izmantojot --with-stacksize opciju, konfigurējot avotus. Šī problēma var rasties sistēmās ar zemu noklusējuma pavedienu steka limitu, īpaši priekšapstrādes laikā, kad tiek izveidoti vairāki pavedieni.

Tālāk redzamais piemērs iestata steka izmēru uz 512 KB katram pavedienam:

./configure --enable-server --with-mysql --with-stacksize=512

Sistēmas pavedienu steka limitus izpildes laikā varat pārbaudīt, izmantojot komandu ulimit -s uz Linux bāzētām sistēmām.