Bug 31618

Summary: отсутствуют необходимые зависимости в пакетах libvirt*
Product: Sisyphus Reporter: Стас <stas.grumbler>
Component: libvirt-daemonAssignee: Alexey Shabalin <shaba>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: shaba
Version: unstable   
Hardware: all   
OS: Linux   

Description Стас 2015-12-12 21:08:31 MSK
На систему, развёрнутую с стартер-кита, установил libvirt-kvm и libvirt-lxc.
Запускаю /etc/init.d/libvirtd - демон сообщает в лог об успешном запуске и не работает (завершается).
Смотрю, что происходит при запуске - вижу, что как минимум два нужных пакета не установлены по зависимостям:
# /usr/sbin/libvirtd -v
2015-12-12 17:54:12.724+0000: 10378: info : libvirt version: 1.0.4, package: alt2
2015-12-12 17:54:12.724+0000: 10378: warning : virDriverLoadModule:72 : Module /usr/lib64/libvirt/connection-driver/libvirt_driver_interface.so not accessible
2015-12-12 17:54:12.724+0000: 10378: warning : virDriverLoadModule:72 : Module /usr/lib64/libvirt/connection-driver/libvirt_driver_xen.so not accessible
2015-12-12 17:54:12.726+0000: 10389: error : dnsmasqCapsRefreshInternal:735 : Cannot check dnsmasq binary /usr/sbin/dnsmasq: Нет такого файла или каталога
2015-12-12 17:54:12.795+0000: 10389: error : dnsmasqCapsRefreshInternal:735 : Cannot check dnsmasq binary /usr/sbin/dnsmasq: Нет такого файла или каталога
2015-12-12 17:54:12.820+0000: 10389: error : virCommandWait:2315 : внутренняя ошибка Child process (/usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf) unexpected exit status 1: libvirt:  ошибка : не удалось выполнить /usr/sbin/dnsmasq: Нет такого файла или каталога

2015-12-12 17:54:12.877+0000: 10389: error : virDBusGetSystemBus:86 : внутренняя ошибка Unable to get DBus system bus connection: Failed to connect to socket /var/run/dbus/system_bus_socket: Нет такого файла или каталога
2015-12-12 17:54:12.877+0000: 10389: warning : networkStartup:435 : DBus not available, disabling firewalld support in bridge_driver: внутренняя ошибка Unable to get DBus system bus connection: Failed to connect to socket /var/run/dbus/system_bus_socket: Нет такого файла или каталога
2015-12-12 17:54:12.901+0000: 10389: error : virDBusGetSystemBus:86 : внутренняя ошибка Unable to get DBus system bus connection: Failed to connect to socket /var/run/dbus/system_bus_socket: Нет такого файла или каталога
2015-12-12 17:54:12.909+0000: 10389: error : nwfilterDriverStartup:213 : DBus matches could not be installed. Disabling nwfilter driver
2015-12-12 17:54:12.909+0000: 10389: error : virDBusGetSystemBus:86 : внутренняя ошибка Unable to get DBus system bus connection: Failed to connect to socket /var/run/dbus/system_bus_socket: Нет такого файла или каталога
2015-12-12 17:54:12.909+0000: 10389: error : virStateInitialize:826 : Initialization of NWFilter state driver failed
2015-12-12 17:54:12.909+0000: 10389: error : daemonRunStateInit:880 : Ошибка инициализации состояния драйвера

Список пакетов libvirt-*
libvirt-client-1.0.4-alt2
libvirt-daemon-config-network-1.0.4-alt2
libvirt-daemon-driver-secret-1.0.4-alt2
libvirt-lxc-1.0.4-alt2
libvirt-daemon-1.0.4-alt2
libvirt-daemon-driver-lxc-1.0.4-alt2
libvirt-daemon-driver-nwfilter-1.0.4-alt2
libvirt-daemon-driver-nodedev-1.0.4-alt2
libvirt-daemon-driver-storage-1.0.4-alt2
libvirt-daemon-driver-qemu-1.0.4-alt2
libvirt-kvm-1.0.4-alt2
libvirt-daemon-driver-network-1.0.4-alt2
libvirt-daemon-config-nwfilter-1.0.4-alt2
libvirt-qemu-common-1.0.4-alt2


В форуме я однажды уже спрашивал, почему в зависимостях к libvirt-daemon нет dnsmasq, ответ от одного из ментейнеров был, что, мол, он может работать и без dnsmasq. Как я вижу тут - не может (как минимум без напильника, который мне неизвестен).
Comment 1 Alexey Shabalin 2016-03-24 10:50:33 MSK
Основная проблема не в отсутствии dnsmasq, а в не запущенном dbus.
Unable to get DBus system bus connection: Failed to connect
to socket /var/run/dbus/system_bus_socket: Нет такого файла или каталога

Как я писал в #31906 я не буду стартовать messagebus из libvirtd.
Comment 2 Стас 2016-03-24 11:17:55 MSK
(В ответ на комментарий №1)
> Основная проблема не в отсутствии dnsmasq, а в не запущенном dbus.
...
> Как я писал в #31906 я не буду стартовать messagebus из libvirtd.

Во-первых, основное в этом багрепорте - не установленный dnsmask. dbus всё же установлен, хотя и по зависимостям от других пакетов.

Во-вторых, запустить dbus и поставить ему автозапуск можно руками, что я и сделал тогда.
Хорошо бы в стартовом скрипте sysV сделать проверку и выдать ошибку, если dbus не запущен, а в конфиге systemd можно просто указать зависимость запуска.
Comment 3 Alexey Shabalin 2016-03-24 11:26:00 MSK
для systemd в libvirtd.service указано After=dbus.service, там проблем быть не должно.
Comment 4 Alexey Shabalin 2016-03-24 11:35:48 MSK
1) libvirtd может работать без dnsmasq
2) libvirtd не может работать без dbus. посмотрю как лучше тут поступить.
Comment 5 Стас 2016-03-24 11:57:31 MSK
(В ответ на комментарий №4)
> 1) libvirtd может работать без dnsmasq

"Из коробки" не работает. Если считаете, что зависимость у libvirt-daemon-config-network от dnsmasq ставить не нужно - хорошо, тогда нужно изменить конфигурацию libvirt, устанавливаемую с пакетом. Варианты:
- сделать сеть default изолированной либо маршрутизируемой;
- убрать autostart у сети default, это проще - убираем из спека строку
	ln -s ../default.xml /etc/libvirt/qemu/networks/autostart/default.xml
 Одновременно хорошо бы внести в документацию предупреждение о необходимости dnsmasq для типа сети "nat".
Comment 6 Alexey Shabalin 2016-03-25 23:32:37 MSK
Делаю следующее(надеюсь устроит всех):
1) убираю из спека ln -s ../default.xml /etc/libvirt/qemu/networks/autostart/default.xml
т.е. после установки никакая сеть сама стартовать не будет. И это правильно.
У кого уже есть такой симлинк, но сеть default ему не нужна, придется удалить самостоятельно.

2) зависимость на dnsmasq добавил в пакет libvirt-daemon-config-network.
т.к. автостарта сети default нет, сам он стартовать не будет. сервис dnsmasq по умолчанию тоже не стартует. 
Но ничего не должно мешать libvirt создать виртуальную сеть с раздачей алресов по dhcp с помощью dnsmasq. весит он около 300кб, проблем создать не должен.

3) добавлена зависимость на dbus в пакет libvirt-daemon, теперь он должен стартовать без проблем.

4) работа без polkit по-прежнему возможна, поэтому его не добавляю в зависимости.

Если нет возражений, отправлю в таком виде в сизиф.
Comment 7 Alexey Shabalin 2016-03-25 23:37:15 MSK
тестовое задание #162000
Comment 8 Стас 2016-03-27 14:05:36 MSK
(В ответ на комментарий №7)
> тестовое задание #162000

Проверил, с qemu работает сразу после установки.
Comment 9 Alexey Shabalin 2016-03-28 15:44:09 MSK
исправлено в 1.3.2-alt2