我有两个基于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
我发现我可以解决这个问题,但这看起来真的很糟糕。如果将其放在提供示例文件的其中一个配方中,它将避免此特定错误,但可能会导致其他错误。
do_install_append () {
rm -f ${D}${bindir}/example
}
有没有更好的方法来避免这种冲突?我认为PREFERRED_PROVIDER
可能有一些希望但是没有任何成功。
答案 0 :(得分:4)
解决这个问题的常用方法是更新替代类。请参阅update-alternatives.bbclass上的meta / classes / update-alternatives.bbclass和Yocto Project Reference Manual条目。 http://www.yoctoproject.org/docs/2.0/ref-manual/ref-manual.html#ref-classes-update-alternatives是指向该链接的链接。
答案 1 :(得分:0)
我想关键问题是为什么两个配方都安装相同的文件,如果安装了两个软件包会发生什么?在正确的情况下删除文件是一个非常好的修复,或者如果您需要在两个文件之间进行选择,或者在do_install中重命名文件以使它们没有冲突,则使用update-alternatives ...