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

Yocto拉取更新后bitbake编译ros-image-turtlebot3-core的do_rootfs阶段缺失rpm报错

问题根因

该问题是2021年前后Yocto dunfell分支补丁、meta-ros foxy分支配置变更共同导致的已知兼容性问题,核心触发原因有两个:

  • 本地留存的旧版本sstate缓存与更新后的上游配方RPM部署规则不匹配,旧缓存生成的RPM包不会触发重新部署流程,仅会保留在对应recipe的work目录deploy-rpms子路径下,不会同步到全局deploy/rpm目录
  • meta-ros在2021年的更新中调整了glibc-locale、gcc-runtime等基础依赖的子包拆分规则,原有构建配置未同步开启强制全局部署开关,导致拆分出的子包没有被自动同步到全局RPM部署目录
解决方案

快速修复当前构建

不要使用软链接方式规避,软链接生成的包不会被RPM包管理器纳入索引校验,会引发后续的依赖冲突、版本校验错误等异常,建议优先清理对应异常包的sstate缓存重新生成:

# 清理已知异常包的sstate缓存
bitbake -c cleansstate glibc-locale gcc-runtime
# 重新触发构建
bitbake ros-image-turtlebot3-core

如果仍有其他包报同类路径错误,将对应包名加入cleansstate列表即可。

永久规避同类问题

在构建配置文件conf/local.conf中添加如下配置,强制所有生成的RPM包自动同步到全局部署目录:

# 强制RPM包部署到全局deploy/rpm路径
RPM_DEPLOY_TO_DEPLOY_DIR = "1"
PACKAGE_WRITE_DEPS += "package-index"

严重混乱时的快速重置

如果本地构建目录的缓存已经出现大面积路径异常,不需要重新搭建整套Yocto环境,仅删除构建目录下的临时文件和RPM部署目录重新构建即可,比完整重编译节省大量时间:

rm -rf build/BUILD-poky-foxy-dunfell/tmp build/BUILD-poky-foxy-dunfell/deploy/rpm
bitbake ros-image-turtlebot3-core

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:36:04