sudo apt update 忽略:1 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu jammy InRelease 错误:2 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu jammy Release 404 Not Found [IP: 101.6.15.130 80] 命中:3 https://packages.microsoft.com/repos/code stable InRelease 命中:4 http://archive.ubuntu.com/ubuntu jammy InRelease 命中:5 http://archive.ubuntu.com/ubuntu jammy-updates InRelease 命中:6 http://archive.ubuntu.com/ubuntu jammy-backports InRelease 命中:7 http://archive.ubuntu.com/ubuntu jammy-security InRelease 获取:8 http://packages.ros.org/ros2/ubuntu jammy InRelease [4,682 B] 错误:8 http://packages.ros.org/ros2/ubuntu jammy InRelease 下列签名无效: EXPKEYSIG F42ED6FBAB17C654 Open Robotics <[email protected]> 正在读取软件包列表... 完成 E: 仓库 “http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu jammy Release” 没有 Release 文件。 N: 无法安全地用该源进行更新,所以默认禁用该源。 N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。 W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。GPG 错误:http://packages.ros.org/ros2/ubuntu jammy InRelease: 下列签名无效: EXPKEYSIG F42ED6FBAB17C654 Open Robotics <[email protected]>
时间: 2025-07-25 09:31:11 浏览: 18
<think>我们正在解决两个主要问题:ROS源的404错误和GPG签名无效问题。
根据引用[1][2][3][5],GPG签名无效通常是因为密钥过期或缺失。而404错误可能是由于源地址配置了错误的Ubuntu版本代号。
步骤:
1. 首先,检查并确保`/etc/apt/sources.list.d/`目录下ROS相关源文件中的Ubuntu版本代号正确。
例如,对于Ubuntu 22.04,代号应为jammy;20.04为focal;18.04为bionic;16.04为xenial。
用户需要根据自己系统版本调整。
2. 移除旧的或错误的ROS源文件(如果有多个)以避免冲突。例如:
```bash
sudo rm /etc/apt/sources.list.d/ros-*.list
```
3. 重新添加正确的ROS源。例如,对于ROS2(假设系统是Ubuntu 22.04):
```bash
echo "deb [arch=$(dpkg --print-architecture)] https://packages.ros.org/ros2/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/ros2.list
```
注意:这里使用https协议,避免引用[3]中提到的密钥存储问题。
4. 导入新的GPG密钥(根据引用[2][3][5]):
```bash
sudo apt install curl -y
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
```
但注意,引用[3]提到apt-key已被弃用,推荐将密钥添加到/etc/apt/trusted.gpg.d/目录。因此更安全的方式是:
```bash
sudo mkdir -p /etc/apt/trusted.gpg.d/
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/ros.gpg
```
5. 更新APT缓存:
```bash
sudo apt update
```
如果上述步骤后仍然出现GPG错误,可能是因为旧的密钥还在系统中。可以尝试先删除旧的密钥(通过密钥指纹):
```bash
sudo apt-key del F42ED6FBAB17C654 # 根据引用[3][5]中的密钥指纹
```
然后再执行步骤4。
6. 如果遇到404错误,请再次确认源中的版本代号是否正确,并确保网络连接正常。可以尝试使用浏览器访问源中的dists目录,查看是否存在对应的版本目录。
7. 如果问题仍然存在,考虑更换镜像源(如引用[5]中提到的中科大镜像):
将源地址中的`packages.ros.org`替换为`mirrors.ustc.edu.cn/ros`(注意镜像可能同步延迟)。
注意:以上步骤需要根据实际情况调整,特别是Ubuntu版本和ROS版本(ROS1或ROS2)。
另外,引用[3]提到,在Isaac ROS2的docker环境中,由于密钥过期导致的问题,解决方法也是更新密钥和源。
因此,总结步骤:
步骤1:删除旧的ROS源文件
步骤2:添加正确的源(注意版本和协议https)
步骤3:删除旧的GPG密钥(如果存在)
步骤4:使用新方法添加GPG密钥(避免使用apt-key add,改用gpg --dearmor到trusted.gpg.d目录)
步骤5:更新APT
如果还有问题,检查网络(如引用[4]中提到的DNS问题)或更换镜像源。
下面我们按照这个思路给出具体命令。</think>针对 `sudo apt update` 中出现的 ROS 源 404 错误和 GPG 签名无效问题,以下是系统性的解决方案:
### 一、解决 GPG 签名无效问题
1. **删除旧密钥并导入有效密钥**:
```bash
sudo apt-key del F42ED6FBAB17C654 # 删除过期密钥[^3]
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo gpg --dearmor -o /usr/share/keyrings/ros-archive-keyring.gpg
```
此操作将导入最新有效的 ROS 密钥(避免使用弃用的 `apt-key add` 方式)[^3][^4]
2. **验证密钥指纹**:
```bash
gpg --show-keys /usr/share/keyrings/ros-archive-keyring.gpg
```
确认输出包含指纹 `C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654`[^2]
### 二、修复 404 错误(源地址问题)
1. **检查并修正源文件**:
```bash
sudo nano /etc/apt/sources.list.d/ros2.list
```
确保内容为(根据您的 Ubuntu 版本选择):
```bash
# Ubuntu 22.04 (Jammy)
deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://packages.ros.org/ros2/ubuntu jammy main
# Ubuntu 20.04 (Focal)
deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://packages.ros.org/ros2/ubuntu focal main
```
关键修改:
- 使用 `https://` 替代 `http://`[^3]
- 明确指定密钥路径 `signed-by=`
- 确认发行版代号正确(如 jammy/focal)[^1]
2. **替代方案:使用国内镜像源**(如中科大镜像):
```bash
deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.ustc.edu.cn/ros2/ubuntu jammy main
```
### 三、清理并更新
```bash
sudo rm -rf /var/lib/apt/lists/* # 清除旧索引
sudo apt clean # 清理缓存
sudo apt update # 重新更新
```
### 四、验证修复
成功更新后应显示:
```bash
命中:1 https://packages.ros.org/ros2/ubuntu jammy InRelease
已下载软件包列表,无错误提示
```
### 常见问题排查
1. **仍出现 404 错误**:
- 检查 `/etc/apt/sources.list.d/` 中是否有冲突的 ROS 源文件(如 `ros.list` 和 `ros2.list` 并存)
- 使用 `lsb_release -a` 确认系统版本代号
2. **GPG 错误持续出现**:
```bash
sudo rm /etc/apt/trusted.gpg # 清除遗留的全局信任密钥
sudo apt update --allow-insecure-repositories
```
> **关键点**:ROS 密钥于 2023 年 7 月更新,旧密钥(以 `F42ED6` 开头)已失效[^3][^5]。必须使用新密钥 `C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654` 并正确配置源地址格式。
阅读全文
相关推荐




















