ROS2 Humble 安装记录
这篇文章记录一下 Ubuntu 22.04 Jammy 上安装 ROS2 Humble 的过程。安装 ROS2 本身并不复杂真正麻烦的是网络环境。尤其在国内环境下官方步骤里的 apt 源、GitHub、ROS2 软件源、Ubuntu 镜像源都可能成为阻塞点。我的结论是先理解官方安装方法再用 FishROS 一键安装脚本完成工程化配置最后针对具体网络问题排查。一、官方推荐的三类安装方式ROS2 Humble 官方 Installation 总览中Ubuntu 22.04 Jammy 主要对应三类安装方式第一类是 deb packages。这是 Ubuntu 22.04 上最推荐的方式。官方文档明确列出 Ubuntu Linux Jammy Jellyfish 22.04 支持deb packages并把它标为推荐安装方式。它的优点是依赖自动处理后续也能跟随系统 apt 更新一起升级。对普通学习、工程开发、Autoware/ROS2 感知开发来说这就是首选。具体步骤见官方 Ubuntu deb packages 页面。第二类是 source。source 安装就是从源码构建 ROS2。它同样可以得到一个可用的 ROS2 环境但更适合需要修改 ROS2 核心包、裁剪某些基础能力或者目标平台没有合适二进制包的开发者。普通使用者不建议一上来就 source 安装因为它引入了更多依赖、编译时间和构建错误。官方对应页面是 Ubuntu source。第三类是 binary archive。binary archive 是预编译压缩包。它适合没有 root 权限或者不方便通过 apt 安装 deb 包的环境。它的缺点是包覆盖不如 deb 完整。官方 Ubuntu binary 页面也说明预编译 binary 并不包含所有 ROS2 packages。所以对 Ubuntu 22.04 ROS2 Humble 来说决策很简单普通开发优先 deb packages。要改 ROS2 核心或特殊平台source。没有 root 权限或不能用 aptbinary archive。本文实际目标是安装ros-humble-desktop也就是官方 deb 安装中的桌面版。它包含 ROS、RViz、demo 和教程内容适合作为 ROS2 学习与工程开发的基础环境。二、官方 deb 安装的基本逻辑官方 deb 安装大致包含几步设置 UTF-8 locale。启用 Ubuntu Universe 仓库。配置 ROS2 apt source 和 key。sudo apt update更新软件包索引。sudo apt upgrade保证系统包处于较新状态。安装ros-humble-desktop或ros-humble-ros-base。source/opt/ros/humble/setup.bash。其中有一个细节很重要官方文档提醒Ubuntu 22.04 早期更新中安装 ROS2 前应先更新systemd和udev相关包否则在新系统上直接安装 ROS2 依赖可能触发关键系统包被移除的问题。所以不要跳过sudo apt upgrade这类基础准备。按官方步骤理解ROS2 安装不是神秘过程本质就是给 apt 配好 ROS2 软件源。让 apt 找到 ROS2 依赖包。安装桌面版或基础版。把 ROS2 环境变量加载进 shell。真正的问题是这套流程高度依赖网络。三、为什么我建议国内环境直接用 FishROS严格来说FishROS 不是 ROS2 官方安装方式。它是国内 ROS/ROS2 开发者常用的一键安装工具项目也开源在 fishros/install。但在国内环境下它非常实用。因为官方安装过程中最容易出问题的不是ros-humble-desktop这个包本身而是前置配置Ubuntu 软件源是否可用。ROS2 软件源是否可用。apt key 是否配置正确。GitHub 是否能访问。rosdep 是否能更新。apt 索引是否能正常刷新。下载大量依赖时是否会中断。FishROS 的价值是把这些重复且容易出错的动作封装起来尤其是换源、配置 ROS2 源、配置 apt key、更新 apt 索引。对学习和工程环境准备来说这比手动一步步敲官方命令更省时间。我这次使用的命令是wgethttp://fishros.com/install-Ofishros.fishros通过脚本选择 ROS2 Humble 相关安装配置让脚本完成配置国内 Ubuntu 软件源。配置 ROS2 国内软件源。配置 ROS2 apt 密钥。更新 apt 软件包索引。然后再安装桌面版 ROS2sudoaptupdatesudoaptinstall-yros-humble-desktop这里要强调一点使用 FishROS 不等于不用理解官方安装。FishROS 只是帮我们自动化执行配置动作。出了问题仍然要回到官方 deb 安装逻辑去判断是源的问题、key 的问题、apt 索引的问题、依赖的问题还是网络路径的问题。四、本次安装遇到的问题apt 下载依赖时 403 Forbidden在安装ros-humble-desktop时apt 会下载大量依赖包。我遇到的问题是apt 从国内 Ubuntu 镜像源下载部分包时返回403 Forbidden。这个现象容易误判。第一反应可能是软件源配置错了ROS2 源没有配好apt key 有问题包名写错了镜像站同步失败但这次排查发现根因不是 ROS2 源配置错误而是 apt 访问镜像源时走了 IPv6 地址导致部分包下载失败。也就是说源看起来是对的包也确实存在但网络路径不对。apt 经 IPv6 去访问镜像源时被拒绝于是表现为403 Forbidden。五、解决办法强制 apt 使用 IPv4解决方法是给 apt 增加一个配置强制使用 IPv4echoAcquire::ForceIPv4 true;|sudotee/etc/apt/apt.conf.d/99force-ipv4然后清理缓存并重新安装sudoaptcleansudoaptupdatesudoaptinstall-yros-humble-desktop这次安装随后成功。这个经验可以沉淀成一个通用排查判断如果 apt 源配置正确sudo apt update基本正常但在安装大量依赖时部分包下载返回403 Forbidden、连接失败或超时不要只盯着 ROS2 源和包名。还要检查 DNS、IPv6、镜像源访问路径和网络代理。在国内网络环境里强制 IPv4 是一个值得优先尝试的低成本修复手段。六、环境变量配置安装完成后需要让 shell 能找到 ROS2 命令和环境。手动加载source/opt/ros/humble/setup.bash如果希望每次打开终端自动加载可以写入~/.bashrcechosource /opt/ros/humble/setup.bash~/.bashrcsource~/.bashrc然后验证命令是否可用ros2--help如果能正常显示ros2命令帮助信息说明 ROS2 Humble 的基础环境已经加载成功。更完整的验证方式是继续运行官方 demosource/opt/ros/humble/setup.bash ros2 run demo_nodes_cpp talker另开一个终端source/opt/ros/humble/setup.bash ros2 run demo_nodes_py listener如果 listener 能收到 talker 发布的消息就说明 C 和 Python 的基础通信链路都正常。七、安装经验总结这次安装可以总结成四点。第一Ubuntu 22.04 安装 ROS2 Humble官方推荐路径是 deb packages。普通工程开发不要一开始就折腾源码编译。第二source 和 binary archive 都有明确场景。source 面向要改 ROS2 基础包或特殊平台的开发者binary archive 面向没有 root 权限或不能用 apt 的环境。第三国内网络环境下建议使用 FishROS 一键安装来处理换源、ROS2 源和 apt key 配置减少手工配置时间。第四安装失败不一定是 ROS2 的问题。apt 经 IPv6 访问镜像源导致403 Forbidden就是典型网络路径问题。这个时候强制 apt 使用 IPv4往往比反复改源更有效。结论ROS2 Humble 的安装本质上是一件工程环境准备工作。官方文档给出了正确路径FishROS 提供了国内网络环境下更顺手的自动化封装而真正需要工程师判断的是失败现象背后的层级。如果是新装 Ubuntu 22.04我的建议流程是先理解官方 deb 安装逻辑。用 FishROS 配置国内源和 ROS2 源。安装ros-humble-desktop。遇到下载失败时优先排查网络路径必要时强制 IPv4。安装后写入setup.bash并用ros2 --help、talker/listener 做基础验证。这样安装 ROS2 不只是“把命令跑通”而是建立一套可复用的环境准备和故障排查方法。