解决方案

可以手工添加。

ROS1云课→18一键配置_linux ros1配置

下载ros.key,然后手工添加到对应位置。

ros2407.key · master · zhangrelay / ros_book · GitCode


问题描述

ROS安装key NO_PUBKEY F42ED6FBAB17C654_笔记

ros2@ros2-20l1a001cd:~$ sudo apt update 
Hit:1 http://ftp.sjtu.edu.cn/ubuntu noble InRelease
Hit:2 http://ftp.sjtu.edu.cn/ubuntu noble-updates InRelease           
Hit:3 http://ftp.sjtu.edu.cn/ubuntu noble-backports InRelease         
Get:4 http://packages.ros.org/ros2/ubuntu noble InRelease [4,667 B]   o
Hit:5 http://security.ubuntu.com/ubuntu noble-security InRelease      
Err:4 http://packages.ros.org/ros2/ubuntu noble InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654
Reading package lists... Done
W: GPG error: http://packages.ros.org/ros2/ubuntu noble InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654
E: The repository 'http://packages.ros.org/ros2/ubuntu noble InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

下载并加载

下载

wget https://gitcode.net/ZhangRelay/ros_book/-/blob/master/ros2407.key

ROS安装key NO_PUBKEY F42ED6FBAB17C654_笔记_02

加载

sudo apt-key add ros2407.key

使用类似

curl -sS https://download.spotify.com/debian/pubkey_5E3C45D7B312C643.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/spotify.gpg

这里会发现很多操作随着时间会有明显变化的。

ROS安装key NO_PUBKEY F42ED6FBAB17C654_bash_03

ROS安装key NO_PUBKEY F42ED6FBAB17C654_持续学习_04


完成

ROS安装key NO_PUBKEY F42ED6FBAB17C654_bash_05


ros2 jazzy

24-07-29一共1987个功能包。

ROS安装key NO_PUBKEY F42ED6FBAB17C654_ubuntu_06

sudo apt install ros-jazzy-desktop-full 

安装ROS 2 Jazzy Jalisco_ros-jazzy-desktop


问题描述中提到的错误是由于APT(Advanced Package Tool)在尝试从ROS 2的软件源更新软件包列表时,无法验证签名,因为缺少相应的公钥。这通常发生在添加新的软件源或仓库时,如果没有导入相应的GPG密钥,APT就无法验证下载的软件包的完整性和真实性。

解决方案如下:

1. **下载ROS公钥**:
   使用`wget`命令从提供的URL下载ROS的公钥文件。例如:
   ```bash
   wget https://gitcode.net/ZhangRelay/ros_book/-/raw/master/ros2407.key
   ```
   注意:确保下载链接是正确的,并且指向的是`.key`文件的原始内容,而不是网页或其他格式。

2. **添加公钥到APT**:
   下载完公钥文件后,使用`apt-key`命令将其添加到APT的密钥环中:
   ```bash
   sudo apt-key add ros2407.key
   ```
   这将允许APT验证来自ROS软件源的软件包签名。

3. **更新APT软件包列表**:
   添加公钥后,再次运行`sudo apt update`以更新软件包列表。此时,应该不会再出现签名验证错误。

4. **安装ROS**:
   一旦APT能够成功验证软件源,就可以安装ROS了。例如,安装ROS 2 Jazzy版本的完整桌面环境:
   ```bash
   sudo apt install ros-jazzy-desktop-full
   ```

按照这些步骤操作后,应该能够解决签名验证问题,并成功安装ROS。如果在安装过程中遇到其他问题,请检查网络连接、软件源设置或查看相关的ROS安装文档。

针对您描述的问题,即在安装ROS 2时遇到的公钥验证失败问题(NO_PUBKEY F42ED6FBAB17C654),以下是一个详细的解决方案步骤,帮助您正确添加ROS 2的公钥并继续安装过程。

步骤 1: 下载ROS 2公钥

首先,您需要从ROS 2的官方源或可靠的第三方源下载公钥。注意,您提供的链接(https://gitcode.net/ZhangRelay/ros_book/-/blob/master/ros2407.key)可能不是直接下载链接,而是一个网页上的文件链接。通常,您需要使用“raw”链接来直接下载文件。不过,为了更可靠,您应该使用ROS 2官方提供的公钥。

ROS 2的官方公钥通常可以在ROS 2的官方文档或软件源页面找到。这里我提供一个通用的命令,用于添加ROS 2的公钥(注意替换为实际的公钥URL):



bash复制代码

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key F42ED6FBAB17C654

如果您知道确切的公钥URL,并且它是以.gpg.key文件形式提供的,您也可以使用wget下载它,然后再添加到APT密钥环中:



bash复制代码

wget -O - https://raw.githubusercontent.com/path/to/ros2.gpg.key | sudo apt-key add -

注意:上面的URL(https://raw.githubusercontent.com/path/to/ros2.gpg.key)是示例,您需要替换为实际的公钥URL。

步骤 2: 验证公钥是否已添加

添加公钥后,您可以通过以下命令验证它是否已成功添加到APT的密钥环中:



bash复制代码

apt-key list | grep F42ED6FBAB17C654

如果公钥已正确添加,您应该会看到与F42ED6FBAB17C654相关的输出。

步骤 3: 更新软件包列表并安装ROS 2

现在,公钥已经添加,您可以安全地更新您的软件包列表并尝试安装ROS 2了:


bash复制代码

sudo apt update 
sudo apt install ros-jazzy-desktop-full

请注意,ros-jazzy-desktop-full是ROS 2 Jazzy版本的完整桌面安装包。根据您的需求,您可能希望安装不同的ROS 2版本或不同的软件包集合。

步骤 4: 初始化ROS 2环境

安装完成后,您需要初始化ROS 2环境,以便能够使用它:



bash复制代码

echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc 
source ~/.bashrc

这些命令将ROS 2的环境变量添加到您的bash配置文件中,并立即应用这些更改。

总结

通过上述步骤,您应该能够解决因缺少公钥而导致的ROS 2安装问题,并成功安装ROS 2 Jazzy版本。如果在安装过程中遇到其他问题,请确保检查ROS 2的官方文档或搜索相关的社区论坛和问答网站以获取帮助。