root@ubuntu:~/xhc_ros2_ws# sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
root@ubuntu:~/xhc_ros2_ws# echo “deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu jammy main” | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
root@ubuntu:~/xhc_ros2_ws# sudo apt clean
root@ubuntu:~/xhc_ros2_ws# sudo rm -rf /var/lib/apt/lists/*
root@ubuntu:~/xhc_ros2_ws# sudo apt updateReading package lists… Done
E: Failed to fetch https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/jammy/main/binary-arm64/Packages 404 Not Found [IP: 2402:f000:1:400::2 443]
E: Failed to fetch https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/jammy-updates/main/binary-arm64/Packages 404 Not Found [IP: 2402:f000:1:400::2 443]
E: Failed to fetch https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/jammy-backports/main/binary-arm64/Packages 404 Not Found [IP: 2402:f000:1:400::2 443]
E: Failed to fetch https://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/jammy-security/main/binary-arm64/Packages 404 Not Found [IP: 2402:f000:1:400::2 443]
结论
清华源/阿里源对 ARM64 架构同步有问题,这是 RDK X5 (ARM64) 的常见问题。推荐换用华为云镜像源或ROS2 官方源。
解决方案:换用华为云镜像源
华为云对 ARM64 架构支持更好:
# 1. 备份当前配置
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak4
# 2. 写入华为云源 (ARM64 支持更好)
sudo tee /etc/apt/sources.list > /dev/null <<EOF
deb https://repo.huaweicloud.com/ubuntu/ jammy main restricted universe multiverse
deb https://repo.huaweicloud.com/ubuntu/ jammy-updates main restricted universe multiverse
deb https://repo.huaweicloud.com/ubuntu/ jammy-backports main restricted universe multiverse
deb https://repo.huaweicloud.com/ubuntu/ jammy-security main restricted universe multiverse
EOF
# 3. 清理缓存
sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
# 4. 更新
sudo apt update
如果华为云也失败:使用 ROS2 官方源 + 手动安装依赖
# 1. 只用 Ubuntu 官方源(不替换 mirrors)
sudo tee /etc/apt/sources.list > /dev/null <<EOF
deb http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse
EOF
# 注意:ARM64 架构用 ports.ubuntu.com 而不是 archive.ubuntu.com
# 2. 清理并更新
sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt update
# 3. 安装基础依赖
sudo apt install libceres-dev liblapack-dev libeigen3-dev
# 4. 安装 ROS2 包
sudo apt install ros-humble-slam-toolbox ros-humble-navigation2
备选方案:源码编译 slam_toolbox
如果 apt 始终无法安装,直接源码编译:
# 1. 安装编译依赖(用 ports.ubuntu.com 源)
sudo apt install libceres-dev liblapack-dev libeigen3-dev libboost-all-dev
# 2. 克隆源码
mkdir -p ~/slam_ws/src
cd ~/slam_ws/src
git clone -b humble https://github.com/SteveMacenski/slam_toolbox.git
# 3. 编译
cd ~/slam_ws
colcon build --symlink-install
# 4. source 环境
source install/setup.bash
请先执行这个测试
# 测试 ports.ubuntu.com 是否可用
curl -I http://ports.ubuntu.com/ubuntu-ports/dists/jammy/main/binary-arm64/Packages
如果返回 HTTP/1.1 200 OK,说明 ARM64 源可用,用上面的方案 2。
建议优先级
| 优先级 | 方案 | 说明 |
|---|---|---|
| 1 | 华为云源 | 对 ARM64 支持好,速度快 |
| 2 | ports.ubuntu.com | Ubuntu 官方 ARM64 源 |
| 3 | 源码编译 | 不依赖 apt 源,但耗时长 |
先试华为云源方案,把 sudo apt update 的输出贴出来,如果还有 404 我们换 ports.ubuntu.com 源!