Bug 31516

Summary: Не вытягивает нужные зависимости
Product: Sisyphus Reporter: Evgenii Terechkov <evg>
Component: zabbix-server-mysqlAssignee: Alexei Takaseev <taf>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: critical    
Priority: P3 CC: taf
Version: unstable   
Hardware: all   
OS: Linux   

Description Evgenii Terechkov 2015-11-18 14:39:06 MSK
Обновил пакет zabbix-server-mysql до 2.4.7-alt1.
При этом в логе сервера вижу такое:
=8<================================================
 17471:20151118:173158.707 Starting Zabbix Server. Zabbix 2.4.7 (revision 54796).
 17471:20151118:173158.708 ****** Enabled features ******
 17471:20151118:173158.708 SNMP monitoring:           YES
 17471:20151118:173158.708 IPMI monitoring:           YES
 17471:20151118:173158.709 WEB monitoring:            YES
 17471:20151118:173158.709 VMware monitoring:         YES
 17471:20151118:173158.709 Jabber notifications:      YES
 17471:20151118:173158.709 Ez Texting notifications:  YES
 17471:20151118:173158.709 ODBC:                       NO
 17471:20151118:173158.710 SSH2 support:               NO
 17471:20151118:173158.710 IPv6 support:              YES
 17471:20151118:173158.710 ******************************
 17471:20151118:173158.710 using configuration file: /etc/zabbix/zabbix_server.conf
/usr/sbin/zabbix_mysql: relocation error: /usr/sbin/zabbix_mysql: symbol mysql_init, version libmysqlclient_18 not defined in file libmysqlclient.so.18 with link time reference
=8<================================================

Пришлось вручную обновлять (уже установленную) библиотеку для работы с mysql.

Итого, лог обновления:

=8<================================================
Transaction starting at Wed Nov 18 17:31:55 2015
Upgrading zabbix-server-mysql 1:2.4.6-alt1 to 1:2.4.7-alt1
Transaction succeeded at Wed Nov 18 17:31:58 2015
Transaction starting at Wed Nov 18 17:33:50 2015
Upgrading libmysqlclient18 5.5.34-alt1 to 10.0.21-alt4
Transaction succeeded at Wed Nov 18 17:33:52 2015
=8<================================================
Comment 1 Evgenii Terechkov 2015-11-18 14:40:26 MSK
(после ругани в логе процесс zabbix_mysql умирает)
Comment 2 Alexei Takaseev 2015-11-19 05:45:10 MSK
Я так понимаю, в вашей системе на Сизифе стояла древняя тухлая mariadb? На это намекают упоминания версий "5.5.34-alt1 to 10.0.21-alt4". Естественно при таком раскладе возможны коллизии, так как заббикс собирается в актуальном системном окружении. По-идее, что пакет libmysqlclient18, что SQL-сервер должны были обновиться еще в августе этого года обычным apt-get dist-upgrade.

По проблеме умирания после старта, в /etc/zabbix/zabbix_server.conf выставьте параметр DebugLevel на максимум, и посмотрите что там ему не хватает.
Comment 3 Evgenii Terechkov 2015-11-19 06:32:48 MSK
Если программа собирается в актуальном окружении, то пакет с ней должен требовать то, с чем он в этом окружении собирался (желательно в минимально необходимом объёме) :-)

Действительно, был, до вчерашнего дня, пакет libmysqlclient18, собираемый из сорцов оригинального MySQL, версии 5.5.34-alt1. Ничего более нового zabbix-server-mysql-1:2.4.6-alt1 при обновлении не потребовал. Т.е. при обновлении до 2.4.6, так же как и вчера при обновлении до 2.4.7, делалось точечное обновление нужных пакетов, а не dist-upgrade (это делается не руками и глазами смотреть какие именно изменения предлагает dist-upgrade, просто некому; вслепую делать dist-upgrade роботом неразумно).

Видимо, если бы в обоих случаях был dist-upgrade, проблема бы не возникла.

Тем не менее, это не повод отказываться от системы зависимостей, которая в данном случае не отработала хорошо. Думаю, в случае обновления до 2.4.7 apt должен был по зависимостям вытянуть версию libmysqlclient, с которой zabbix-server-mysql реально может работать. Почему этого не произошло? Я вижу три варианта:
1) Недоработка системы поиска зависимостей. Тогда её нужно чинить, чтобы более полно находила зависимости.
2) Автоматика и не могла найти нужную зависимость (хм, как это проверить?). Тогда надо видимо вручную указать в спеке требуемую для работы минимальную версию. Это же и вариант быстрого обхода проблемы.

Увы, перезапускать на этой машине сервер с отладкой (тем более на максимум) неприемлимо, а другого похожего для игр у меня нет. Мне казалось, что приведённой уже информации должно хватить:
=8<===========================================================================
/usr/sbin/zabbix_mysql: relocation error: /usr/sbin/zabbix_mysql: symbol
mysql_init, version libmysqlclient_18 not defined in file libmysqlclient.so.18
with link time reference
=8<===========================================================================

Очевидно, это и есть причина умирания, т.к. увидев что сервер после обновления не поднялся и эту строчку я почти сразу обновил libmysqlclient18, что помогло проблему решить. Конфигурации в /etc/zabbix/ не менялись.
Comment 4 Alexei Takaseev 2015-11-19 06:40:27 MSK
Получается проблема не с пакетом zabbix, а в вашей системе. В случае точечных обновлений всю логику отслеживания и разрешения зависимостей придется выполнять вставшему на этот путь.