Почему я получаю конфликты /etc/cups между попытками установки в Yocto?

У меня есть рецепт компиляции драйвера принтера и несколько простых строк для запуска в do_install.

do_install() {
  install -d ${D}${libdir}/cups/filter
  install -m 755 ${B}/src/rastertoprinter ${D}${libdir}/cups/filter/
  install -d ${D}${sysconfdir}/cups/ppd
  install -m 755 ${B}/../rastertoprinter/printer_name.ppd ${D}${sysconfdir}/cups/ppd/
}

Чтобы скомпилировать исходный код, у меня есть ЗАВИСИМОСТЬ от чашек, а также RDЗАВИСИМОСТЬ от чашек, поскольку ОС, конечно, требует установки чашек для печати.

Драйвер принтера не является общедоступным, поэтому я переименовал его в растертопринтер и изменил свои пути.

По сути, мне нужно просто создать или убедиться, что каталог /usr/lib/cups/filter существует, и скопировать туда программу растрового принтера. Мне также нужно создать или убедиться, что каталог /etc/cups/ppd существует, и скопировать файл .ppd в этот каталог.

Первые две строки работают нормально, но третья выдает следующие ошибки:

file /etc/cups conflicts between attempted installs of printername-r0.corei7_64 and cups-2.2.2-r0.corei7_64
file /etc/cups/ppd conflicts between attempted installs of printername-r0.corei7_64 and cups-2.2.2-r0.corei7_64

Я не понимаю, почему оба рецепта не могут создать этот каталог и поместить в него что-то? Как ни странно, я могу сделать первый каталог /usr/lib/cups/filter, хотя и нормально.


person egfconnor    schedule 26.06.2017    source источник


Ответы (1)


Оказывается, проблема в том, что каждый файл, который нужно упаковать в Yocto, также будет генерировать %dir для каждого родителя каждого файла. Мы не хотим владеть каталогом, принадлежащим другому пакету, поэтому, если вы добавите это в свой рецепт:

DIRFILES = "1"

Это приведет к тому, что ваш пакет не будет владеть родительскими каталогами файлов, которые вы упаковываете.

Это создаст файл спецификаций rpm без записей %dir.

person Paul Knopf    schedule 26.06.2017
comment
так повезло, что кто-то спросил и ответил на такую ​​загадочную проблему. - person Paulo Neves; 24.03.2018
comment
Стоит отметить, что можно получить очень похожую ошибку, если вы по ошибке установите файл вместо каталога - это может произойти, например. если вы забыли создать каталог, а затем приступили к установке файла, указав этот каталог в качестве места назначения вместо полного пути. - person bluelightning; 28.09.2018