ROS云课-公钥出错-手工导入-一键配置-2025更新

现象

解决

直接复制如下内容到云课终端回车执行即可。

echo "Upgrade Mission Begins."
 
echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
 
mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc
VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro
u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4
K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG
aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+
TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz
pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p
V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT
hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/
/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV
okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB
tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA
PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur
F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB
RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z
PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa
DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC
Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR
fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0
quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1
1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6
qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA
TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo
22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6
WE+F5FaIKwb72PL4rLi4
=i0tj
-----END PGP PUBLIC KEY BLOCK-----" >> ~/ros.asc
 
sudo apt-key add ros.asc

sudo apt update
  
echo "Upgrade Mission Completed."

官方功能包-2774


这个案例展示了在Ubuntu系统上使用apt命令更新软件包列表并处理公钥错误的过程。以下是对案例的详细总结:

初始问题

  1. 公钥缺失
    • 在尝试从packages.ros.org更新ROS(机器人操作系统)的软件包列表时,系统报告缺少公钥(NO_PUBKEY F42ED6FBAB17C654),导致无法验证签名。

解决步骤

  1. 获取公钥
    • 用户似乎通过某种方式(未在日志中明确显示,但通常是从相关网站或文档中获取)获取了所需的公钥,并将其保存为ros.asc文件。
  2. 添加公钥
    • 使用sudo apt-key add ros.asc命令将公钥添加到系统的APT密钥环中。
  3. 重新更新软件包列表
    • 再次运行sudo apt update,这次成功从packages.ros.org获取了InRelease文件和Packages文件,没有公钥错误。

结果

  • 成功更新
    • 系统成功更新了软件包列表,包括ROS相关的仓库。
    • 报告有491个软件包可以升级。
  • 输出信息
    • 最后,用户通过echo "Upgrade Mission Completed."命令输出了一条完成信息,标志着更新过程的结束。

关键点

  • 公钥的重要性
    • 公钥用于验证下载的软件包是否来自可信的源,确保软件的安全性和完整性。
  • APT密钥管理
    • 使用apt-key命令管理APT的公钥,是处理此类问题的常用方法。
  • 定期更新
    • 定期更新软件包列表和系统可以确保系统安全性和功能性。

改进建议

  • 自动化公钥管理
    • 在可能的情况下,自动化公钥的获取和添加过程,以减少手动操作的错误。
  • 监控和日志
    • 保持对系统更新过程的监控和日志记录,以便在出现问题时进行快速排查。

这个案例展示了在Ubuntu系统上处理软件包更新时遇到的公钥问题,以及如何通过添加公钥来解决问题。

shiyanlou:~/ $ sudo apt update                                        [8:27:36]
命中:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial InRelease
命中:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates InRelease       
命中:3 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security InRelease      
命中:4 http://mirrors.cloud.aliyuncs.com/ubuntu bionic-security InRelease     
获取:5 http://packages.ros.org/ros/ubuntu xenial InRelease [4,692 B]          
错误:5 http://packages.ros.org/ros/ubuntu xenial InRelease
  由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654
获取:6 http://packages.ros.org/ros2/ubuntu xenial InRelease [4,668 B]
错误:6 http://packages.ros.org/ros2/ubuntu xenial InRelease
  由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654
已下载 9,360 B,耗时 1秒 (5,688 B/s)
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
有 216 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。GPG 错误:http://packages.ros.org/ros/ubuntu xenial InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654
W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。GPG 错误:http://packages.ros.org/ros2/ubuntu xenial InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654
W: 无法下载 http://packages.ros.org/ros/ubuntu/dists/xenial/InRelease  由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654
W: 无法下载 http://packages.ros.org/ros2/ubuntu/dists/xenial/InRelease  由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654
W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。
shiyanlou:~/ $ >....                                                            
okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB
tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA
PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur
F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB
RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z
PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa
DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC
Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR
fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0
quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1
1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6
qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA
TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo
22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6
WE+F5FaIKwb72PL4rLi4
=i0tj
-----END PGP PUBLIC KEY BLOCK-----" >> ~/ros.asc

sudo apt-key add ros.asc

sudo apt update

echo "Upgrade Mission Completed."
Upgrade Mission Begins.
OK
命中:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial InRelease
命中:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates InRelease       
命中:3 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security InRelease      
命中:4 http://mirrors.cloud.aliyuncs.com/ubuntu bionic-security InRelease      
获取:5 http://packages.ros.org/ros/ubuntu xenial InRelease [4,692 B]           
获取:6 http://packages.ros.org/ros2/ubuntu xenial InRelease [4,668 B]
获取:7 http://packages.ros.org/ros/ubuntu xenial/main amd64 Packages [854 kB]
获取:8 http://packages.ros.org/ros2/ubuntu xenial/main amd64 Packages [131 kB]
获取:9 http://packages.ros.org/ros2/ubuntu xenial/main arm64 Packages [131 kB]
已下载 1,126 kB,耗时 6秒 (187 kB/s)                                           
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
有 491 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
Upgrade Mission Completed.
shiyanlou:~/ $                                                        [8:30:36]


AI总结

从你的描述中可以看出,问题是由于缺少 ROS 仓库的 GPG 公钥,导致 sudo apt update 时出现签名验证错误。这种情况的解决办法是手动添加缺失的公钥。以下是对整个过程的详细分析和解决步骤:


问题分析

  1. 错误提示

    
    

    复制代码

    由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654

    这个错误表示系统尝试从 ROS 仓库(http://packages.ros.org)下载软件包时,无法验证其数字签名,因为缺少对应的 GPG 公钥。

  2. 原因
    Ubuntu 在使用 APT 包管理工具时,会验证软件源的签名以确保安全性和完整性。如果软件源的签名公钥未导入到系统中,就会报这个错误。

  3. 解决方案

    • 手动下载并导入缺失的公钥。
    • 然后重新运行 sudo apt update

解决步骤

1. 查找并下载公钥

从错误提示中提取出缺少的公钥 ID:F42ED6FBAB17C654

可以通过以下方式下载该公钥:


bash复制代码

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

此命令含义:

  • apt-key adv:高级密钥管理工具。
  • --keyserver hkp://keyserver.ubuntu.com:80:指定使用的密钥服务器。
  • --recv-key F42ED6FBAB17C654:下载并导入指定 ID 的公钥。
2. (可选)手动保存并导入公钥

如果上一步的命令由于网络问题失败,可以手动下载公钥并导入:

  1. 使用 wget 下载公钥:
    
    

    bash复制代码

    wget http://packages.ros.org/ros.key
  2. 将下载的公钥导入到系统中:
    
    

    bash复制代码

    sudo apt-key add ros.key
3. 更新软件包列表

成功导入公钥后,重新运行以下命令更新软件包列表:


bash复制代码

sudo apt update

完整解决过程(如你的操作记录)

  1. 下载并导入公钥

    
    

    bash复制代码

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

    或者:

    
    

    bash复制代码

    wget http://packages.ros.org/ros.key
    sudo apt-key add ros.key
  2. 重新更新软件包列表

    
    

    bash复制代码

    sudo apt update
  3. 更新完成
    此时应该不会再有签名错误,输出会类似以下:

    
    

    复制代码

    命中:1 http://mirrors.cloud.aliyuncs.com/ubuntu xenial InRelease
    命中:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-updates InRelease
    命中:3 http://packages.ros.org/ros/ubuntu xenial InRelease
    获取:4 http://packages.ros.org/ros/ubuntu xenial/main amd64 Packages [854 kB]
    已下载 854 kB,耗时 2秒 (427 kB/s)
    正在读取软件包列表... 完成

补充说明

  1. 如何确认公钥是否成功导入
    使用以下命令列出系统中已导入的公钥:

    
    

    bash复制代码

    apt-key list

    如果成功,应该能看到类似以下条目:

    
    

    复制代码

    pub rsa4096 2018-04-26 [SC] [expires: 2028-04-24]
    F42ED6FBAB17C654 Open Robotics <info@osrfoundation.org>
  2. 定期更新密钥
    软件源使用的 GPG 公钥可能会过期或被替换,因此需要定期更新。如果将来再次遇到类似问题,可以按照上述方法重新导入最新的公钥。

  3. 使用受信任的镜像源
    配置可靠的国内镜像源(如阿里云、清华 TUNA 等),可以提高软件包下载速度,并减少因国外服务器连接问题导致的错误。


总结

本次问题的核心是缺少 ROS 仓库的 GPG 公钥,通过手动下载并导入公钥解决了签名验证失败的问题。最终,你成功运行了 sudo apt update 并完成了软件包的更新。


    1  sudo apt update
    2  echo "Upgrade Mission Begins."\n \necho "-----BEGIN PGP PUBLIC KEY BLOCK-----\nVersion: GnuPG v1\n \nmQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc\nVFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro\nu5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4\nK/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG\naIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+\nTwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz\npwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p\nV5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT\nhM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/\n/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV\nokdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB\ntCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA\nPgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur\nF8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB\nRQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z\nPyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa\nDaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC\nQucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR\nfKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0\nquoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1\n1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6\nqjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA\nTUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo\n22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6\nWE+F5FaIKwb72PL4rLi4\n=i0tj\n-----END PGP PUBLIC KEY BLOCK-----" >> ~/ros.asc\n \nsudo apt-key add ros.asc\n\nsudo apt update\n  \necho "Upgrade Mission Completed."
    3  sudo apt update
    4  sudo apt install ros-kinetic-stage-ros ros-kinetic-teb-local-planner ros-kinetic-teb-local-planner-tutorials
    5  sudo apt install ros-kinetic-stdr*
    6  roslaunch teb_local_planner_tutorials robot_diff_drive_in_stage.launch
    7  sudo apt install ros-kinetic-global-planner*
    8  roslaunch teb_local_planner_tutorials robot_diff_drive_in_stage.launch
    9  rostopic list
   10  roslaunch teb_local_planner_tutorials robot_carlike_in_stage.launch


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangrelay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值