我想在Yocto映像中安装一些预编译的.ipk包。安装必须在构建时(在Yocto映像生成期间,而不是在运行时),包将由Yocto从组件本身的源代码生成。造成这种情况的原因是代码隔离策略。
从Yocto文档来看,这似乎可以使用bin_package类来完成。
我在解压任务中遇到了一些问题。在这篇文章中,我以nano软件包为例。
首先,我使用中的菜谱从源代码中编译了Nano。然后,我将编译过程中生成的ipk文件移到我称为预构建的目录中。
然后,我创建了一个名为nan2.bb的菜谱来测试.ipk的解压缩和安装:
SRC_URI = "file:///workdir/example2/poky/build/prebuild/nano_6.2-r0_core2-64.ipk;subpath=${BP}"
inherit bin_package当我运行$bitbake nano2时,我得到以下do_unpack错误日志:
DEBUG: Executing python function do_unpack
DEBUG: Executing python function base_do_unpack
NOTE: Unpacking /workdir/example2/poky/build/prebuild/nano_6.2-r0_core2-64.ipk to /workdir/example2/poky/build/tmp/work/core2-64-poky-linux/nano2/1.0-r0/
tar (child): xz: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
ERROR: Bitbake Fetcher Error: UnpackError('Unpack command PATH="/workdir/example2/poky/build/tmp/sysroots-uninative/x86_64-linux/usr/bin:/workdir/example2/poky/scripts:/workdir/example2/poky/build/tmp/work/core2-64-poky-linux/nano2/1.0-r0/recipe-sysroot-native/usr/bin/x86_64-poky-linux:/workdir/example2/poky/build/tmp/work/core2-64-poky-linux/nano2/1.0-r0/recipe-sysroot/usr/bin/crossscripts:/workdir/example2/poky/build/tmp/work/core2-64-poky-linux/nano2/1.0-r0/recipe-sysroot-native/usr/sbin:/workdir/example2/poky/build/tmp/work/core2-64-poky-linux/nano2/1.0-r0/recipe-sysroot-native/usr/bin:/workdir/example2/poky/build/tmp/work/core2-64-poky-linux/nano2/1.0-r0/recipe-sysroot-native/sbin:/workdir/example2/poky/build/tmp/work/core2-64-poky-linux/nano2/1.0-r0/recipe-sysroot-native/bin:/workdir/example2/poky/bitbake/bin:/workdir/example2/poky/build/tmp/hosttools" ar x /workdir/example2/poky/build/prebuild/nano_6.2-r0_core2-64.ipk data.tar.xz && tar --extract --no-same-owner -p -f data.tar.xz && rm data.tar.xz failed with return value 2', 'file:///workdir/example2/poky/build/prebuild/nano_6.2-r0_core2-64.ipk;subpath=nano2-1.0')
DEBUG: Python function base_do_unpack finished
DEBUG: Python function do_unpack finished文件nano_6.2-r0_core2-64.ipk存在: ls /workdir/example2/poky/build/prebuild/nano_6.2-r0_core2-64.ipk -la -rw-r-r-1 pokyuser pokyuser 172444 11月8日13:24 /workdir/example2/poky/build/prebuild/nano_6.2-r0_core2-64.ipk
在文件夹/workdir/example2/poky/build/tmp/work/core2-64-poky-linux/nano2/1.0-r0/ ls /workdir/example2/poky/build/tmp/work/core2-64-poky-linux/nano2/1.0-r0/ -la中,共计184个drwxr-x4 pokyuser pokyuser,11月8日14:03。drwxr-xr-x3 pokyuser pokyuser 4096 11月8日13:59。-rw-r-1 pokyuser pokyuser 171808 11月8日14:03 data.tar.xz drwxr-xr-x2 pokyuser pokyuser 4096 11月8日14:03纳米2-1.0 drwxr-x2 pokyuser pokyuser 4096
另外,如果我在shell中手动运行,命令do_unpack正在运行,它不会给我任何错误!ar x /workdir/example2/poky/build/prebuild/nano_6.2-r0_core2-64.ipk data.tar.xz && tar --提取液--不属于同一所有者的-p -f data.tar.xz & rm data.tar.xz
我漏掉了什么吗?对如何调试根本原因有什么想法吗?
发布于 2022-11-09 07:18:40
造成此问题的根本原因是,默认情况下,"xz“实用程序不是HOSTTOOLS中列出的白色工具。xz用于提取.ipk内容。
在local.conf中添加下面一行可以解决这个问题
# For Yocto 4 Kirkstone
HOSTTOOL:append = " xz"Yocto IRC的人很有帮助!
https://stackoverflow.com/questions/74364050
复制相似问题