【问题标题】:Why do I get /etc/cups conflicts between attempted installs in Yocto?为什么在 Yocto 中尝试安装之间会出现 /etc/cups 冲突?
【发布时间】:2017-06-26 14:47:30
【问题描述】:

我有一个编译打印机驱动程序的方法,并且有几行简单的行可以在 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/
}

为了编译源代码,我有一个关于杯子的 DEPENDS 和一个关于杯子的 RDEPENDS,因为操作系统当然需要安装杯子才能打印。

打印机驱动程序不公开,因此我已将其重命名为 rastertoprinter 并更改了我的路径名。

基本上我需要简单地创建或确保目录 /usr/lib/cups/filter 存在,并在那里复制 rastertoprinter 程序。我还需要创建或确保目录 /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 目录虽然很好。

【问题讨论】:

    标签: linux yocto cups


    【解决方案1】:

    事实证明,要在 Yocto 中打包的每个文件也会为每个文件的每个父级生成一个%dir。我们不想拥有另一个包拥有的目录,所以如果你将这个添加到你的配方中:

    DIRFILES = "1"
    

    这将导致您的包不拥有您打包的文件的父目录。

    这将生成一个没有 %dir 条目的 rpm 规范文件。

    【讨论】:

    • 很幸运,有人问及回答了这样一个神秘的问题。
    • 值得注意的是,如果您错误地安装文件代替目录,可能会收到非常相似的错误 - 这可能会发生,例如如果您忽略创建一个目录,然后继续安装一个文件,将该目录指定为目标而不是完整路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-05
    • 2014-08-27
    • 2015-07-14
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    相关资源
    最近更新 更多