如何避免在 BitBake 构建期间尝试安装之间的文件冲突?

How to avoid file conflicts between attempted installs during a BitBake build?

我有两个基于 autotools 的 BitBake 配方,它们都提供相同的命名文件(并且都安装在 usr/bin 中),这会导致错误:

error: file /usr/bin/example conflicts between attempted installs of recipe1-0.1-r0.x86 and recipe2-0.1-r0.x86

我发现我可以解决这个问题,但这看起来真的像是一种风格非常糟糕的 hackaround。如果将其放入提供示例文件的其中一个配方中,它将避免此特定错误,但可能会导致其他错误。

do_install_append () {
    rm -f ${D}${bindir}/example
}

有没有更好的办法避免这种冲突?我认为 PREFERRED_PROVIDER 可能会有一些希望,但没有任何成功。

解决此问题的常用方法是更新替代方案class。请参阅 meta/classes/update-alternatives.bbclass 和更新-alternatives.bbclass 上的 Yocto 项目参考手册条目。 http://www.yoctoproject.org/docs/2.0/ref-manual/ref-manual.html#ref-classes-update-alternatives 是 link 到那个。

我想关键问题是为什么两个食谱都安装了同一个文件,如果两个包都安装了会发生什么?在正确的情况下,删除文件是一个非常好的解决方案,或者如果您需要在两个文件之间进行选择,则使用更新替代方案,或者重命名 do_install 中的文件,这样它们就不会冲突...