首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yocto do_unpack .ipk软件包

Yocto do_unpack .ipk软件包
EN

Stack Overflow用户
提问于 2022-11-08 16:27:27
回答 1查看 40关注 0票数 0

我想在Yocto映像中安装一些预编译的.ipk包。安装必须在构建时(在Yocto映像生成期间,而不是在运行时),包将由Yocto从组件本身的源代码生成。造成这种情况的原因是代码隔离策略。

从Yocto文档来看,这似乎可以使用bin_package类来完成。

我在解压任务中遇到了一些问题。在这篇文章中,我以nano软件包为例。

首先,我使用中的菜谱从源代码中编译了Nano。然后,我将编译过程中生成的ipk文件移到我称为预构建的目录中。

然后,我创建了一个名为nan2.bb的菜谱来测试.ipk的解压缩和安装:

代码语言:javascript
复制
SRC_URI = "file:///workdir/example2/poky/build/prebuild/nano_6.2-r0_core2-64.ipk;subpath=${BP}"

inherit bin_package

当我运行$bitbake nano2时,我得到以下do_unpack错误日志:

代码语言:javascript
复制
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

我漏掉了什么吗?对如何调试根本原因有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-11-09 07:18:40

造成此问题的根本原因是,默认情况下,"xz“实用程序不是HOSTTOOLS中列出的白色工具。xz用于提取.ipk内容。

在local.conf中添加下面一行可以解决这个问题

代码语言:javascript
复制
# For Yocto 4 Kirkstone
HOSTTOOL:append = " xz"

Yocto IRC的人很有帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74364050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档