【问题标题】:How to remove unneeded files after those are installed by Yocto?Yocto 安装后如何删除不需要的文件?
【发布时间】:2018-03-05 19:37:30
【问题描述】:

我正在尝试为 yocto 中的自定义库创建配方。我目前收到此错误:

ERROR: ... do_package: QA Issue: pot-plugin: Files/directories were installed but not shipped in any package:
  /usr/lib/qt5/plugins/mediaservice/a.so.1.0
  /usr/lib/qt5/plugins/mediaservice/a.so.1
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.

我已经在 FILES_${PN} 中设置了这些,但在这种情况下,yocto 抱怨那些符号链接如此之大,并且不属于包。正确的做法实际上是将这些也从 sysroot 本身中删除。因此,我尝试定义 do_install 步骤,但在创建包之前找不到如何删除这些步骤。我做了类似的事情:

do_install {
   rm <some_path>/a.so.1.0
   rm <some_path>/a.so.1
}

但我找不到正确的使用路径。有人可以解释这是否是解决问题的正确方法,如果是,在安装这些文件之后和创建包之前我应该​​使用什么路径来删除这些文件?谢谢!

【问题讨论】:

    标签: yocto bitbake openembedded


    【解决方案1】:

    $D 包含 installroot 的路径,因此您可以编写

    do_install_append() {
        rm -f ${D}/usr/lib/qt5/plugins/mediaservice/a.so.1.0 ...
    }
    

    但您可能也想用变量替换/usr/lib/qt5/plugins。为此,请使用

    检查现有变量
    bitbake <recipe> -e | less
    

    【讨论】:

    • 尝试了 $D 但不在 do_install_append 中。完美运行,谢谢!
    【解决方案2】:

    请注意,这实际上是您的自定义库中的一个错误:它不应该为模块安装版本化符号链接。

    如果您使用 libtool 构建它,那么 - IIRC - 传递 -module 将停止它的版本控制。

    【讨论】:

      猜你喜欢
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 2012-02-24
      • 2021-09-12
      • 2020-01-24
      • 2021-10-31
      相关资源
      最近更新 更多