先说一个我碰到很多次的典型场景:有人拿一台 Ubuntu 24.04 跑 sudo apt install ros-humble-desktop,装了大半天报“Unable to locate package”,然后跑来问我是不是源没配好。其实问题根本不在源,而是 ROS2 和 Ubuntu 的版本是严格绑定的——22.04 对应 Humble,24.04 对应 Jazzy,交叉安装就是找死。这篇文章把 Ubuntu 22.04/24.04 安装 ROS2 的完整流程拆开讲,Humble 和 Jazzy 两条线都覆盖,从版本选型、换源、加 key、装包、配环境变量,到 turtlesim 跑通、rviz2 可视化验证,最后再补充 colcon、Gazebo、Nav2 这些实际干活一定会用到的东西,争取你照着走一遍就能跑起来,不折腾。
1. 版本选型:为什么 22.04 对应 Humble、24.04 对应 Jazzy
1.1 ROS2 发行版与 Ubuntu 版本的生命周期映射
ROS2 每个发行版发布时,官方只针对一个或少数几个 Ubuntu 版本提供二进制包。这个“支持矩阵”不是随便定的,而是跟着 Ubuntu LTS 的节奏走。目前最常见的对应关系是这样:
| Ubuntu 版本 | 代号 | 对应 ROS2 发行版 | 类型 | 支持周期 |
|---|---|---|---|---|
| Ubuntu 20.04 | Focal | Foxy Fitzroy | LTS | 至 2023 年(已 EOL) |
| Ubuntu 22.04 | Jammy | Humble Hawksbill | LTS | 至 2027 年 |
| Ubuntu 24.04 | Noble | Jazzy Jalisco | LTS | 至 2029 年 |
| Ubuntu 24.04 | Noble | Rolling | 滚动版 | 持续更新,不稳定 |
记住这个映射表基本就够了。ROS2 的二进制源在加入 apt 源时,会用 $(lsb_release -cs) 自动取 Ubuntu 的代号,放到源的 URL 路径里。比如 Humble 对应的路径是 .../ubuntu jammy main,Jazzy 对应的路径是 .../ubuntu noble main。你如果硬要在 24.04 上安装 Humble,apt 会拿 noble 去匹配 Humble 的源,但那个路径下根本没有针对 noble 的 Humble 包,自然就报找不到。
所以遇到“找不到软件包”这一类问题,先别急着怀疑源有问题,第一件事是对照这张表,看你的 Ubuntu 版本和 ROS2 发行版是不是匹配。
1.2 手头有多个 Ubuntu 版本时怎么选 ROS2 发行版
如果你是刚入门,建议优先选 LTS 版本的 ROS2,因为 LTS 代表官方承诺长期维护,bug 修复和安全更新会持续很多年。教学资源、开源项目、工业应用里,Humble 的存量最大,搜“ros2菜鸟教程”“ros2安装教程”这类内容,大部分也是基于 Humble 写的,踩坑的时候容易搜到答案。如果你是新项目、新环境,或者需要 Gazebo、Nav2 等新版本特性,可以直接上 Jazzy,毕竟它支持到 2029 年,对 Ubuntu 24.04 的适配也最完整。
我自己平常的选型逻辑是:帮别人搭学习环境,默认 22.04 + Humble;自己折腾新功能或者做毕业设计、比赛项目,会选 24.04 + Jazzy,因为新工具链对 Jazzy 的支持明显更好,比如 Jazzy 对 ARM 交叉编译的支持比 Humble 完善不少。至于 Rolling 这种滚动版,适合想追新特性的人,但隔三差五更新就能给你整个依赖 break,不建议新手碰。
1.3 安装前先确认系统架构与硬件环境
执行安装命令之前,我强烈建议先看一下系统架构。在终端里跑:
bash复制uname -m
输出是 x86_64,说明是 Intel/AMD 的 64 位机器;输出是 aarch64,说明是 ARM 架构,比如树莓派、RK3588、Jetson 系列。这个区别很重要,因为 ROS2 的 apt 源会自动根据架构匹配对应的二进制包,大部分情况下你不用额外操作,但如果你打算从源码编译,x86_64 和 aarch64 的依赖库差异很大,尤其是 Eigen、PCL、OpenCV 这些底层库。
另一个值得提前确认的是运行环境。在 VMware、VirtualBox 这类虚拟机里装 Ubuntu 再装 ROS2 的教程非常多,我实测过,虚拟机里跑 turtlesim、rviz2 是没问题的,但要注意给虚拟机分至少 4GB 内存、双核 CPU,否则 rviz2 打开后转动视角会比较卡。虚拟机里如果显卡 3D 加速没开,rviz2 可能黑屏,后面我会专门讲怎么处理。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 装前准备:软件源、locale 与虚拟机的三件套
2.1 Ubuntu 系统软件源先换成国内镜像
ROS2 安装过程中要拉很多依赖包,如果系统源用的是官方地址,在国内网络环境下,下载速度可能非常慢,甚至偶尔超时。所以第一步我会先把 Ubuntu 软件源换成国内镜像。这里要注意,22.04 和 24.04 的源配置文件格式不一样。
Ubuntu 22.04 的源文件在 /etc/apt/sources.list,可以直接备份后替换:
bash复制sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.aliyun.com@g' /etc/apt/sources.list
sudo sed -i 's@//security.ubuntu.com@//mirrors.aliyun.com@g' /etc/apt/sources.list
sudo apt update
Ubuntu 24.04 改用了 deb822 格式,源配置在 /etc/apt/sources.list.d/ubuntu.sources,不能用老办法直接改 sources.list 了。不过 sed 替换依然有效,只需要把 archive.ubuntu.com 替换成镜像域名:
bash复制sudo sed -i 's@http://archive.ubuntu.com/ubuntu/@https://mirrors.aliyun.com/ubuntu/@g' /etc/apt/sources.list.d/ubuntu.sources
sudo apt update
镜像源用清华、阿里云、中科大都行,个人习惯是阿里云,稳定而且带宽充足。这里多说一句:换源之后如果 apt update 出现 `Signa
