news 2026/5/30 22:59:29

Ubuntu 20.04 安装ROS Noetic,遇到‘仓库没有数字签名’报错?手把手教你两种修复方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu 20.04 安装ROS Noetic,遇到‘仓库没有数字签名’报错?手把手教你两种修复方法

Ubuntu 20.04安装ROS Noetic时GPG密钥报错的终极解决指南

当你满怀期待地在Ubuntu 20.04上安装ROS Noetic,准备开启机器人开发之旅时,终端突然跳出"仓库没有数字签名"的红色警告,这种挫败感我深有体会。别担心,这并非你的操作失误,而是APT包管理器在尽职尽责地保护你的系统安全。本文将带你深入理解这个常见问题的本质,并手把手教你两种经过验证的解决方案。

1. 理解GPG密钥验证机制

现代Linux发行版如Ubuntu采用了一套严格的安全机制来确保软件来源的可信度。当你执行sudo apt update时,系统会做以下几件事:

  1. 从配置的软件源下载ReleaseRelease.gpg文件
  2. 使用预先配置的GPG公钥验证这些文件的签名
  3. 只有验证通过的软件源才会被信任

ROS Noetic的安装过程中,关键一步就是添加其官方GPG密钥到系统的信任列表中。如果这一步出现问题,后续的安装就会遇到"没有数字签名"的报错。

常见报错示例

E: 仓库 "http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu focal Release" 没有数字签名。 N: 无法安全地用该源进行更新,所以默认禁用该源。

这个错误的核心原因是系统无法验证ROS软件仓库的完整性,因此出于安全考虑拒绝使用该源。

2. 方法一:手动下载并添加GPG密钥文件

这是官方推荐的方法,虽然步骤稍多,但成功率最高。我将在下面详细说明每个步骤及其背后的原理。

2.1 获取正确的GPG密钥

首先,我们需要获取ROS官方使用的GPG密钥。这个密钥的ID是0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

你可以通过以下两种方式获取密钥内容:

  1. 直接访问Ubuntu密钥服务器:

    curl -sSL http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  2. 或者使用以下命令从备用服务器获取:

    gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

2.2 创建并验证密钥文件

将获取到的密钥内容保存为ros.asc文件。你可以使用任意文本编辑器创建这个文件,但需要注意:

  • 必须包含完整的密钥信息,包括-----BEGIN PGP PUBLIC KEY BLOCK----------END PGP PUBLIC KEY BLOCK-----这两行
  • 文件保存为纯文本格式,不要有多余的格式或隐藏字符

验证文件内容是否正确:

file ros.asc

应该显示ASCII text

2.3 添加密钥到APT信任列表

现在,我们将这个密钥添加到系统的APT信任列表中:

sudo apt-key add ros.asc

如果一切顺利,你会看到类似OK的输出,表示密钥已成功添加。

注意:在某些系统配置下,你可能需要先切换到root用户才能执行此操作。可以使用sudo -i进入root shell后再执行上述命令。

2.4 验证修复效果

完成上述步骤后,再次运行更新命令:

sudo apt update

这次你应该不会再看到关于数字签名的错误了。如果仍然有问题,可以尝试清除APT缓存:

sudo apt clean sudo rm -rf /var/lib/apt/lists/* sudo apt update

3. 方法二:使用替代密钥服务器

如果方法一因网络问题无法正常工作,我们可以尝试使用不同的密钥服务器或命令格式。这种方法在某些网络环境下更为可靠。

3.1 尝试不同的密钥服务器

Ubuntu支持多个密钥服务器,如果默认的keyserver.ubuntu.com不可用,可以尝试:

sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

或者使用香港的镜像服务器:

sudo apt-key adv --keyserver hkp://hkps.pool.sks-keyservers.net:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

3.2 使用完整的密钥添加命令

有时,更完整的命令格式能解决网络问题:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

这个命令会:

  1. 连接到Ubuntu的密钥服务器
  2. 下载指定ID的公钥
  3. 自动将其添加到APT的信任列表中

3.3 验证密钥是否添加成功

无论使用哪种方法,添加完成后都应该验证密钥是否存在:

apt-key list | grep "ROS"

你应该能看到类似这样的输出:

pub rsa2048 2014-07-19 [SC] C1CF 6E31 E6BA DE88 68B1 72B4 F42E D6FB AB17 C654 uid [ unknown] Open Robotics <info@osrfoundation.org>

4. 常见问题与解决方案

在实际操作中,你可能会遇到一些特殊情况。下面是我总结的几个常见问题及其解决方法。

4.1 权限问题

当执行apt-key add时,可能会遇到权限不足的错误。这时可以:

  1. 使用sudo提升权限:

    sudo apt-key add ros.asc
  2. 或者切换到root用户:

    sudo -i apt-key add ros.asc exit

重要:操作完成后记得退出root会话,避免意外执行危险命令。

4.2 网络连接问题

如果密钥服务器无法访问,可以尝试:

  • 检查网络连接是否正常
  • 尝试不同的DNS服务器(如8.8.8.8或1.1.1.1)
  • 等待一段时间后重试,可能是服务器临时不可用

4.3 密钥格式错误

如果遇到"找不到有效的OpenPGP数据"错误,可能是密钥文件格式有问题。解决方法:

  1. 重新下载密钥文件,确保没有多余的空格或换行
  2. 检查文件编码是否为纯ASCII
  3. 尝试从不同来源获取密钥

5. 深入理解APT安全机制

为了更好地预防类似问题,了解APT的工作原理很有帮助。APT使用GPG密钥来验证软件包的真实性,这个过程包括:

  1. 软件源配置/etc/apt/sources.list/etc/apt/sources.list.d/中的文件定义了软件源
  2. Release文件:包含软件源的元数据和校验和
  3. Release.gpg:Release文件的数字签名
  4. 密钥环/etc/apt/trusted.gpg.d/中的密钥用于验证签名

当这个链条中的任何一环出现问题时,就会导致验证失败。理解这一点有助于你更快地诊断和解决类似问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 13:03:32

创意电子入门:用铜胶带与LED制作发光鮟鱇鱼纸电路

1. 项目概述&#xff1a;当电路艺术遇见深海精灵几年前&#xff0c;我在一个创客市集上看到一个孩子&#xff0c;他手里拿着一个用纸板和LED做的小夜灯&#xff0c;眼睛里的光比那盏灯还要亮。那一刻我意识到&#xff0c;电子制作的门槛&#xff0c;其实远比我们想象的要低。它…

作者头像 李华
网站建设 2026/5/30 23:51:02

手机号逆向查询QQ号:从遗忘到找回的完整解决方案

手机号逆向查询QQ号&#xff1a;从遗忘到找回的完整解决方案 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾经因为忘记QQ号码而无法登录重要账号&#xff1f;明明手机号就在通讯录中&#xff0c;却想不起那个陪伴多年的QQ号…

作者头像 李华
网站建设 2026/5/30 21:58:21

终极Edge浏览器管理方案:EdgeRemover专业PowerShell脚本完全指南

终极Edge浏览器管理方案&#xff1a;EdgeRemover专业PowerShell脚本完全指南 【免费下载链接】EdgeRemover A PowerShell script that correctly uninstalls or reinstalls Microsoft Edge on Windows 10 & 11. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover…

作者头像 李华
网站建设 2026/5/29 13:03:10

抖音下载器终极指南:三步实现批量下载与去水印

抖音下载器终极指南&#xff1a;三步实现批量下载与去水印 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音…

作者头像 李华