2017-02-15 77 views
6

我使用Yocto Project颇具成效,常见的挑战是确定文件被包含在rootfs上的原因(或来自哪个配方)。这是希望从构建系统的环境中获得的东西,也就是元数据。理想情况下,一组命令将允许将文件链接回源(即配方)。如何查找哪个Yocto Project配方在映像根文件系统中填充特定文件

我通常的策略是对元数据(例如grep -R filename ../layers/*)执行搜索并在互联网上搜索所述文件名以查找可能负责任的食谱的线索。但是,这并不总是非常有效。在很多情况下,文件名在配方中没有明确说明。另外,在很多情况下,文件名是由多个配方提供的,这导致额外的工作来查找哪个配方最终提供了它。当然,还有许多其他线索可以找到答案。无论如何,当构建系统应该有足够的信息来简化答案时,这项调查往往非常费力。

回答

8

这是oe-pkgdata-util脚本及其子命令find-path的确切用例。该脚本是openembedded-core的一部分。

见这个例子:

[email protected]:~/oe/build> oe-pkgdata-util find-path /lib/ld-2.24.so 
glibc: /lib/ld-2.24.so 

你可以清楚地看到,这个库属于glibc的配方。

oe-pkgdata-util有更多有用的子命令来查看有关包和食谱的信息,值得检查--help

0

部署每个配方的候选文件被放置在每个$ WORKDIR /图像

所以你可以cd到

$ cd ${TMPDIR}/work/${MULTIMACH_TARGET_SYS} 

和结果,你应该执行

$ find . -path '*/image/*/fileYouAreLookingFor' 

能够推断部署这种文件的配方的$ {PN}。

例如:

$ find . -path '*/image/*/mc' 
./bash-completion/2.4-r0/image/usr/share/bash-completion/completions/mc 
./mc/4.8.18-r0/image/usr/share/mc 
./mc/4.8.18-r0/image/usr/bin/mc 
./mc/4.8.18-r0/image/usr/libexec/mc 
./mc/4.8.18-r0/image/etc/mc 
2

如果你喜欢图形化表示,该烤面包机的web用户界面也会显示你这一点,再加上依赖信息。

相关问题