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

ROS2 Yocto构建报错:RDEPENDS无python3-native依赖提供者

解决Yocto构建ROS2 py-pubsub包时的file-rdeps QA错误

问题根源

报错核心原因是talker脚本的shebang行硬编码了构建主机的Python绝对路径,而非目标Yocto镜像系统中的Python路径。Yocto的包质量检查(QA)扫描脚本依赖时,发现该主机路径不存在于目标系统的依赖包中,因此抛出错误。

分步解决方案

  1. 修复脚本的Shebang路径
    在py-pubsub_git.bb中添加或修改do_install函数,用sed替换脚本里的硬编码路径:

    do_install() {
        # 执行ROS2包默认安装逻辑(基于colcon/ament)
        inherit python3native
        colcon install --install-base ${D}/usr
    
        # 修改talker脚本的shebang为目标系统通用路径
        sed -i 's|#!/.*python3|#!/usr/bin/env python3|' ${D}/usr/lib/py_pubsub/talker
        # 若存在listener等其他ROS2脚本,同步修改
        sed -i 's|#!/.*python3|#!/usr/bin/env python3|' ${D}/usr/lib/py_pubsub/listener
    }
    

    此操作将脚本开头的主机Python路径替换为目标系统的通用Python路径,让Yocto识别正确的依赖关系。

  2. 修正RDEPENDS配置
    在py-pubsub_git.bb中添加目标系统的Python依赖,不要添加主机路径:

    RDEPENDS:${PN} = "python3-core python3-rclpy python3-ament-index-python"
    

    依赖项可根据ROS2包的实际需求调整,确保均为Yocto提供的目标系统包。

  3. 解决之前do_install的路径错误
    你之前尝试删除目录时提示不存在,是因为路径符号错误:报错中的路径是/usr/lib/py_pubsub(下划线),但你写的是py-pubsub(连字符)。不过修复shebang后无需删除该目录,可忽略此操作。

验证步骤

  • 执行bitbake py-pubsub -c cleanall清除构建缓存
  • 重新执行bitbake core-image-sato

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:45:14