如何在Yocto安装后删除不需要的文件?

时间:2018-03-01 20:46:29

标签: yocto bitbake openembedded

我试图在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
}

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

如果您正在使用libtool构建它,那么 - IIRC - 传递 - 模块将停止它的版本化。