Yocto: ошибка сборки файла данных при включении libvirt

При включении libvirt в yocto я вижу ниже проблему конфликта файлов данных при создании образа yocto,

Ниже приведены пакеты, которые я пытаюсь добавить к своему образу yocto.

IMAGE_INSTALL_append = " \     
       packagegroup-core-boot \     
       qemu \     
       libvirt \     
       libvirt-libvirtd \     
       libvirt-virsh \     
       kernel-module-kvm \     
       kernel-module-kvm-intel \    
    " 

Но я вижу проблему ниже, когда я создаю изображение, включающее вышеуказанные пакеты,

`Collected errors:

  • check_data_file_clashes: Package iptables wants to install file /-/-/-/rootfs/etc/ethertypesBut that file is already provided by package * ebtables`

К вашему сведению: я вижу, что libvirt зависит как от iptables, так и от ebtables.

может кто-нибудь помочь понять это и как решить?

Я попытался удалить ebtables с помощью PACKAGECONFIG_remove = "ebtables", и образ был создан, но при запуске службы libvirtd он всегда находится в мертвом режиме, и я вижу некоторые проблемы, связанные с сокетом.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
41
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ваша проблема в том, что есть два пакета, которые заполняют ваш образ Linux одним и тем же файлом, поэтому возникает конфликт. Вы обязательно должны проверить переменную PREFERRED_PROVIDER, это может быть решением:

PREFERRED_PROVIDER_ethertypes ?= "libvirt"
PREFERRED_PROVIDER используется не для указания файлов, а для указания пакета. Ваше решение не сработает.
Talel BELHADJSALEM 22.03.2022 12:22

Да, поскольку это конфликт файлов, PREFERRED_PROVIDER не работает, @TalelBELHADJSALEM может предложить что-нибудь еще?

Deekshith Reddy 23.03.2022 13:43

Проверьте мой ответ выше.

Talel BELHADJSALEM 23.03.2022 13:59
Ответ принят как подходящий

На самом деле, это проблема, которая не имеет решения, кроме:

  1. Удалите один из пакетов (ebtables или iptables)

  2. Удалите файл ethertypes из одного из рецептов

libvirt зависит от iptables только во время компиляции, поэтому я не знал, почему iptables присутствует на изображении?

В любом случае, у него есть конфигурация на ebtables, и, судя по вашему комментарию, когда вы удалили его из PACKAGECONFIG, он не работал. Так:

Я предлагаю проверить, требуется ли iptables другим пакетом во время выполнения, если не удалить его.

Если в вашем случае требуются оба, выберите второе решение, которое удаляет файл из одного из рецептов, используя файл bbappend для одного из них:

Блок, который вам может понадобиться добавить:

do_install_append() {
    rm ${D}/etc/ethertypes
}

либо в:

  • meta-custom/recipes-filter/ebtables/ebtables_%.bbappend

или:

  • meta-custom/recipes-extended/iptables/iptables_%.bbappend

ПРИМЕЧАНИЕ

Если вы выберете второе решение, вам нужно убедиться, что файл отсутствует в переменной FILES рецепта, из которого вы удалите файл, FILES_ebtables или FILES_iptables.

Спасибо за подробный ответ, теперь сборка идет успешно. Я удалил файл ethertypes из iptables, но все еще вижу проблему с сокетом: когда livirtd запускается, libvirtd всегда мертв или неактивен # ошибка списка virsh: не удалось подключиться к ошибке гипервизора: не удалось подключить сокет к '/var/run/libvirt /libvirt-sock': Нет такого файла или каталога #ls /var/run/libvirt/ interface network virtlockd-sock virtlogd-sock

Deekshith Reddy 24.03.2022 06:59

Если мое решение решило вашу проблему, примите его как правильное, в противном случае ваша новая проблема должна быть в отдельном вопросе.

Talel BELHADJSALEM 24.03.2022 11:00

Другие вопросы по теме