1 Kompilēšanas problēmas

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

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 libcurl, ko lietot.

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

Tas darbosies, ja tā ir vienīgā sistēmā instalētā libcurl bibliotēka, taču var nedarboties, ja ir instalēta cita libcurl standarta atrašanās vietā (piemēram, pakotņu pārvaldnieka instalēta). 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ā -Wl,--no-as-needed opciju, 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 sastingst steka pārpildes dēļ, varat palielināt katra pavediena steka izmēru, konfigurējot avotus, izmantojot --with-stacksize opciju avotu konfigurēšanas laikā. Šī problēma var rasties sistēmās ar zemu noklusējuma pavedienu steka ierobežojumu, īpaši priekšapstrādes laikā, kad tiek izveidoti vairāki pavedieni.

Tālāk redzamajā piemērā steka izmērs tiek iestatīts uz 512 KB katram pavedienam:

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

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