如何解决ROS软件包仓库密钥过期错误

嘿,大家好!在使用ROS机器人操作系统)时,你可能会遇到一个让人头疼的问题,那就是软件包仓库密钥过期的错误。当你运行sudo apt update时,可能会看到以下两个错误消息:

Following signatures invalid EXPKEYSIG F42ED6FBAB17C654 Open Robotics info@osrfoundation.org
Failed to fetch packages ros org

这些错误可能会妨碍你更新ROS软件包,但别担心,今天我将向你展示如何解决这个问题,使你的ROS系统重新运行起来。

为什么会出现这个问题

首先,让我们了解为什么会出现这个问题。ROS使用了Ubuntu的Debian软件包系统来分发ROS软件包。为了确保你下载的所有软件包都是真实的,没有被修改过,最佳实践是对这些软件包进行签名。这就涉及到使用GPG密钥来签名软件包。

然而,GPG密钥默认设置了最多2年的有效期。现在,到了2021年的五月底,这个密钥已经过期了,所以你会看到操作系统发出了密钥已过期的警告,错误代码是EXPKEYSIG

错误的具体表现

当你运行sudo apt update时,你会看到4条错误消息,它们都在抱怨密钥过期的问题。其中一条在中间部分,其余三条在输出的末尾。

中间部分的错误消息示例:

The following signatures were invalid EXPKEYSIG F42ED6FBAB17C654 Open Robotics info osrfoundation org
Err:8 http://packages.ros.org/ros/ubuntu focal InRelease   
   The following signatures were invalid: EXPKEYSIG F42ED6FBAB17C654 Open Robotics info@osrfoundation.org

末尾部分的错误消息示例:

W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://packages.ros.org/ros/ubuntu focal InRelease: The following signatures were invalid: EXPKEYSIG F42ED6FBAB17C654 Open Robotics info@osrfoundation.org
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://packages.ros.org/ros/ubuntu focal InRelease: The following signatures were invalid: EXPKEYSIG F42ED6FBAB17C654 Open Robotics info@osrfoundation.org
W: Failed to fetch http://packages.ros.org/ros/ubuntu/dists/focal/InRelease The following signatures were invalid: EXPKEYSIG F42ED6FBAB17C654 Open Robotics info@osrfoundation.org
W: Failed to fetch http://packages.ros.org/ros/ubuntu/dists/focal/InRelease The following signatures were invalid: EXPKEYSIG F42ED6FBAB17C654 Open Robotics info@osrfoundation.org
W Some index files failed to download. They have been ignored or old ones used instead
W: Some index files failed to download. They have been ignored, or old ones used instead.

如何解决

要解决这个问题,你需要添加更新后的密钥文件,并再次运行sudo apt update来验证修复。

步骤1:添加更新后的密钥文件

适用于ROS 1:ROS Melodic或Noetic

如果你使用的是ROS Melodic或Noetic,运行以下命令:

curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

apt-key add命令将添加新的ROS密钥。当成功时,你将看到输出中显示"OK"。

适用于ROS 2:ROS2 Galactic、Foxy、Dashing...

如果你使用的是ROS 2,如ROS2 Galactic、Foxy或Dashing,密钥文件与ROS 1 不同。你需要运行以下命令:

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

步骤2:验证修复并检查更新后的ROS软件包

现在,运行sudo apt update来验证密钥是否已成功添加和修复。

sudo apt update

你将看到类似下面的输出。只要没有看到

任何错误,你就可以像往常一样更新ROS软件包了。

$ sudo apt update
...
 Get:15 http://packages.ros.org/ros/ubuntu focal InRelease [4,676 B] 
...
 Fetched 2,671 kB in 2s (1,607 kB/s)                     
 Reading package lists… Done
 Building dependency tree       
 Reading state information… Done
 30 packages can be upgraded. Run 'apt list --upgradable' to see them.

至此,新的密钥已经设置为有效期5年,比默认设置多3年。这应该足够覆盖你当前的Ubuntu操作系统和ROS版本的使用寿命。

结语

恭喜你,你已经成功解决了ROS软件包仓库密钥过期的问题,现在可以继续愉快地使用ROS了!

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:如何解决ROS软件包仓库密钥过期错误

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年9月17日
下一篇 2023年9月17日

相关推荐

  • 软路由系统(ROS)端口转发实战指南

    有一天,当我坐在家中,迫切需要从外部网络远程访问我位于内部网络的家庭服务器时,我陷入了困境。这是一个非常普遍的需求,特别是对于像我这样的技术爱好者和网络管理员。所以,我决定写下这篇教程,以指导你如何…

    2023年10月12日
    00
  • iKuai、OpenWrt 和 ROS 对比:哪个软路由更适合你?

    iKuai、OpenWrt 和 ROS 都是非常受欢迎的路由器操作系统,它们都提供了强大的网络管理和安全功能。然而,这三种操作系统在一些方面存在差异。下面将详细比较 iKuai、OpenWrt 和 ROS 的不同之处,并帮助用户选择适合…

    2023年4月15日
    00