Как избежать конфликтов файлов между попытками установки во время сборки BitBake?

У меня есть два рецепта 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, но безрезультатно.


person karobar    schedule 03.02.2016    source источник


Ответы (2)


Обычный способ решения этой проблемы — класс update-alternatives. См. meta/classes/update-alternatives.bbclass и запись Справочного руководства проекта Yocto в update-alternatives.bbclass. http://www.yoctoproject.org/docs/2.0/ref-manual/ref-manual.html#ref-classes-update-alternatives — это ссылка на это.

person Richard Purdie    schedule 03.02.2016
comment
что делать, если файл не является двоичным файлом? - person JustWe; 19.10.2020

Я думаю, ключевой вопрос заключается в том, почему оба рецепта устанавливают один и тот же файл, и что должно произойти, если установлены оба пакета? Простое удаление файла является отличным решением в правильных ситуациях, или используйте альтернативные обновления, если вам нужно выбрать между двумя файлами, или переименуйте файлы в do_install, чтобы они не конфликтовали...

person Ross Burton    schedule 04.02.2016