Yocto:启用 libvirt 时数据文件冲突构建错误
Yocto: Data file clashes build error while enabling libvirt
在 yocto 中启用 libvirt 时,我在构建 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/ethertypes
But that file is already provided by package * ebtables`
仅供参考:我看到 libvirt 同时依赖 iptables 和 ebtables。
有人可以帮助理解这个问题以及如何解决吗?
我尝试使用 PACKAGECONFIG_remove = "ebtables"
删除 ebtables 并构建了图像,但是当我启动 libvirtd 服务时,它始终处于死模式,我看到一些与套接字相关的问题。
您的问题是有两个包使用相同的文件填充您的 linux 图像,因此存在冲突。
您绝对应该检查 PREFERRED_PROVIDER 变量,这可能是解决方案:
PREFERRED_PROVIDER_ethertypes ?= "libvirt"
其实这是一个无解的问题,除了:
删除其中一个软件包(ebtables 或 iptables)
从其中一个食谱中删除文件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
.
在 yocto 中启用 libvirt 时,我在构建 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/ethertypes
But that file is already provided by package * ebtables`
仅供参考:我看到 libvirt 同时依赖 iptables 和 ebtables。
有人可以帮助理解这个问题以及如何解决吗?
我尝试使用 PACKAGECONFIG_remove = "ebtables"
删除 ebtables 并构建了图像,但是当我启动 libvirtd 服务时,它始终处于死模式,我看到一些与套接字相关的问题。
您的问题是有两个包使用相同的文件填充您的 linux 图像,因此存在冲突。 您绝对应该检查 PREFERRED_PROVIDER 变量,这可能是解决方案:
PREFERRED_PROVIDER_ethertypes ?= "libvirt"
其实这是一个无解的问题,除了:
删除其中一个软件包(ebtables 或 iptables)
从其中一个食谱中删除文件
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
.