现象

解决
直接复制如下内容到云课终端回车执行即可。
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命令更新软件包列表并处理公钥错误的过程。以下是对案例的详细总结:
初始问题
- 公钥缺失:
- 在尝试从
packages.ros.org更新ROS(机器人操作系统)的软件包列表时,系统报告缺少公钥(NO_PUBKEY F42ED6FBAB17C654),导致无法验证签名。
- 在尝试从
解决步骤
- 获取公钥:
- 用户似乎通过某种方式(未在日志中明确显示,但通常是从相关网站或文档中获取)获取了所需的公钥,并将其保存为
ros.asc文件。
- 用户似乎通过某种方式(未在日志中明确显示,但通常是从相关网站或文档中获取)获取了所需的公钥,并将其保存为
- 添加公钥:
- 使用
sudo apt-key add ros.asc命令将公钥添加到系统的APT密钥环中。
- 使用
- 重新更新软件包列表:
- 再次运行
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 时出现签名验证错误。这种情况的解决办法是手动添加缺失的公钥。以下是对整个过程的详细分析和解决步骤:
问题分析
-
错误提示:
复制代码由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654这个错误表示系统尝试从 ROS 仓库(
http://packages.ros.org)下载软件包时,无法验证其数字签名,因为缺少对应的 GPG 公钥。 -
原因:
Ubuntu 在使用 APT 包管理工具时,会验证软件源的签名以确保安全性和完整性。如果软件源的签名公钥未导入到系统中,就会报这个错误。 -
解决方案:
- 手动下载并导入缺失的公钥。
- 然后重新运行
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. (可选)手动保存并导入公钥
如果上一步的命令由于网络问题失败,可以手动下载公钥并导入:
- 使用
wget下载公钥:bash复制代码wget http://packages.ros.org/ros.key - 将下载的公钥导入到系统中:
bash复制代码sudo apt-key add ros.key
3. 更新软件包列表
成功导入公钥后,重新运行以下命令更新软件包列表:
bash复制代码
sudo apt update |
完整解决过程(如你的操作记录)
-
下载并导入公钥:
bash复制代码sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F42ED6FBAB17C654或者:
bash复制代码wget http://packages.ros.org/ros.keysudo apt-key add ros.key -
重新更新软件包列表:
bash复制代码sudo apt update -
更新完成:
此时应该不会再有签名错误,输出会类似以下:复制代码命中: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)正在读取软件包列表... 完成
补充说明
-
如何确认公钥是否成功导入:
使用以下命令列出系统中已导入的公钥:bash复制代码apt-key list如果成功,应该能看到类似以下条目:
复制代码pub rsa4096 2018-04-26 [SC] [expires: 2028-04-24]F42ED6FBAB17C654 Open Robotics <info@osrfoundation.org> -
定期更新密钥:
软件源使用的 GPG 公钥可能会过期或被替换,因此需要定期更新。如果将来再次遇到类似问题,可以按照上述方法重新导入最新的公钥。 -
使用受信任的镜像源:
配置可靠的国内镜像源(如阿里云、清华 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
6万+

被折叠的 条评论
为什么被折叠?



