在Yocto中,有没有一种方法可以检查将安装在镜像中的软件包的确切列表?

23
在基于Yocto的嵌入式Linux发行版中,我非常想找到每个依赖层中将要构建和安装到映像文件中的包/食谱/内核模块的完整列表,在执行映像构建食谱之前。例如:
bitbake my-image-minimal

有没有实现这个的方法?在这方面的任何指导都将不胜感激。

提前致谢。

5个回答

25
是的,
Yocto以清单文件的形式维护软件包信息,该文件位于以下位置:<"your_build_folder">/tmp/deploy/images/<"machine_image">/<"image_name">.manifest。

7
这是一个很好的工具,用于“构建”之后的使用,但他所问的是在之前。 - David Bensoussan

25

是的,像这样在旧的Bitbake版本中:

bitbake -g <image> && cat pn-depends.dot | grep -v -e '-native' \
    | grep -v digraph | grep -v -e '-image' | awk '{print $1}' | sort | uniq

摘自NXP社区网站

在更新的版本中:

bitbake -g <image> && cat pn-buildlist | grep -ve "native" | sort | uniq

1
嗨,由于某些原因,pn-depends.dot文件没有被创建。只有task-depends.dot、pn-buildlist和recipe-depends.dot被创建了。 - mozcelikors
1
{btsdaf} - mozcelikors
2
第二种方法似乎没有显示图像中的所有软件包。我有一个软件包在列出的某个软件包的RDEPENDS中,但它没有显示在列表中。 - Johannes Schaub - litb
2
根据手册:“pn-buildlist:显示要构建的目标的简单列表。” 如果您在pn-buildlist中找到一个名称,这并不一定意味着该软件包已包含在镜像中。一个例子是如果您有RDEPENDS_${PN}-ptest,它会为软件包测试套件添加运行时依赖项。 - MikeBergmann
1
我认为-cross也应该被过滤掉;这是不会安装交叉编译工具链的。 - Jan Hudec
显示剩余3条评论

8
您可以在生成的.manifest文件中找到列表。 请参见IMAGE_MANIFEST

0
在你的`conf/local.conf`中添加`INHERIT += "buildhistory"`并重新构建。

你能否给一些提示,它可能会做什么?那将非常有帮助。谢谢。 - avimehenwal
1
嗨,我已经有一段时间没有涉足这个领域了,但是在这里可能最好检查一下用法:https://stackoverflow.com/questions/27531898/how-to-use-buildhistory-in-yocto-build-system - Angelo Dureghello

0
我们之前已经讨论过这个问题,由于各种原因,很难在不完整的构建过程中知道哪些软件包最终会出现在镜像中。
查看镜像内容最好的工具之一是buildhistory类。将其添加到local.conf中的用户类中。输出结果将保存在构建目录下的buildhistory子目录中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接