You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重构Poky Dunfell分支后db-native配方do_install阶段chown报错求助

问题根因

你遇到的报错是Yocto Dunfell分支db_5.3.28.bb配方的已知缺陷,触发原因是你将Poky默认放在根目录的官方层迁移到自定义layers子目录后,该配方内置的路径解析逻辑计算出了错误的安装前缀,导致DESTDIR路径拼接异常:从报错日志可以看到image目录(对应构建出的镜像根目录)下还嵌套了主机构建环境的完整绝对路径,do_install阶段执行chown -R root:root时尝试修改超出fakeroot模拟范围/当前用户权限的路径所有权,最终触发Operation not permitted错误。


解决方案

方案1:针对性修复db-native配方(最快捷,无全局影响)

在你的自定义层中新增recipes-support/db/db_5.3.28.bbappend文件,添加以下内容覆盖错误的chown逻辑即可:

do_install() {
    oe_runmake DESTDIR=${D} install
    # 移除冗余的全局chown操作,fakeroot环境会自动将文件所有权设置为root:root
}

# 可选:如果有特殊权限要求,仅对目标安装目录设置权限即可,避免遍历整个镜像目录
do_install[postfuncs] += "fix_db_perms"
fix_db_perms() {
    chmod -R 755 ${D}${prefix}
}

修改完成后删除构建缓存重新构建即可:

rm -rf build/tmp/work/x86_64-linux/db-native/
bitbake core-image-minimal

方案2:修复全局路径配置

如果存在全局路径配置错误的问题,按以下步骤修正:

  • 检查build/conf/local.conf,确认COREBASE变量指向你Fork版Poky的根目录(即包含layers、bitbake、oe-init-build-env的上层目录),添加/修正如下配置:
    COREBASE = "[redacted]/test"
    
  • 确认bblayers.conf中填写的层路径都是绝对物理路径,不要使用相对路径或者软链接路径,避免BitBake路径解析异常。
  • 清理全量构建缓存后重新构建:
    rm -rf build/tmp
    bitbake core-image-minimal
    

方案3:排查环境权限问题

如果上述方案无效,检查构建环境基础配置:

  • 确认构建目录所在分区不是NFS、SMB等网络挂载分区,且挂载参数没有设置no_root_squash、nosuid等会影响fakeroot运行的参数
  • 确认你使用非root用户执行构建操作,Yocto不支持直接用root用户执行构建

内容的提问来源于stack exchange,提问作者etfreima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:45:05