向core-image-sato添加自定义配方时出现do_package_write_rpm任务依赖错误
问题分析与解决方案
错误根源
报错指向的是torohwtest-core-image-sato.bb这个镜像配方缺少do_package_write_rpm任务,而非你的novahwtest软件包配方。镜像配方本身不是可安装的软件包,默认没有包写入类任务,但do_populate_sdk任务会尝试依赖所有被引用配方的包生成任务,从而触发错误。
修复步骤
1. 纠正依赖关系(优先方案)
你不需要单独创建torohwtest-core-image-sato.bb来添加novahwtest,直接修改core-image-sato的配置即可:
- 在
local.conf中追加:
或者在你的layer中创建IMAGE_INSTALL_append = " novahwtest"core-image-sato.bbappend文件,添加:
这样就无需额外的镜像配方,避免依赖混乱。IMAGE_INSTALL += "novahwtest"
2. 若需保留自定义镜像配方
如果必须使用torohwtest-core-image-sato.bb,需在该配方中禁用所有包相关任务:
# 禁用镜像配方的包生成任务 do_package[noexec] = "1" do_package_write_rpm[noexec] = "1" do_package_write_deb[noexec] = "1" do_package_write_ipk[noexec] = "1" # 原有的镜像配置 require recipes-core/images/core-image-sato.bb IMAGE_INSTALL += "novahwtest"
同时确保你执行的是bitbake torohwtest-core-image-sato,而非bitbake core-image-sato——后者不会自动关联你的自定义镜像配方,除非你在配置中错误地将镜像配方加入了依赖。
3. 确认novahwtest配方的正确性
对于纯Python脚本的部署,novahwtest.bb的正确配置示例:
SUMMARY = "Nova HW Test Scripts" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" SRC_URI = "git://your/repo/path.git;branch=main" S = "${WORKDIR}/git" inherit allarch # 禁用不必要的编译、打包任务 do_compile[noexec] = "1" do_package[noexec] = "1" do_package_write_rpm[noexec] = "1" do_package_write_deb[noexec] = "1" do_package_write_ipk[noexec] = "1" do_install() { # 创建目标目录 install -d ${D}${bindir} # 部署Python脚本 install -m 0755 ${S}/test_script.py ${D}${bindir}/ } # 确保文件被正确打包到镜像 FILES:${PN} += "${bindir}/*.py"
常见误区排查
- 不要将镜像配方添加到
IMAGE_INSTALL中,只有软件包配方可以被添加到该变量。 - 检查
local.conf中是否存在错误配置,比如CORE_IMAGE_EXTRA_INSTALL += "torohwtest-core-image-sato",这类配置会导致core-image-sato尝试安装镜像配方,触发依赖错误。
内容的提问来源于stack exchange,提问作者RichM
相关产品推荐
相关产品推荐

