Debian 更新 update 出现 没有公钥 的解决办法

情况如题,命令及信息(关键处我换成了**)如下

apt-get update
Get:1 http://security.debian.org wheezy/updates Release.gpg [1554 B]
Get:2 http://security.debian.org wheezy/updates Release [39.0 kB]
Get:3 http://ftp.debian.org wheezy Release.gpg [2373 B]
Get:4 http://security.debian.org wheezy/updates/main amd64 Packages [414 kB]
Get:5 http://ftp.debian.org wheezy Release [191 kB]      
Get:6 http://security.debian.org wheezy/updates/contrib amd64 Packages [14 B]  
Get:7 http://security.debian.org wheezy/updates/non-free amd64 Packages [14 B] 
Get:8 http://security.debian.org wheezy/updates/main i386 Packages [416 kB]   
Get:9 http://ftp.debian.org wheezy/main amd64 Packages [5839 kB]       
Get:10 http://security.debian.org wheezy/updates/contrib i386 Packages [14 B]  
Get:11 http://security.debian.org wheezy/updates/non-free i386 Packages [14 B]  
Get:12 http://security.debian.org wheezy/updates/contrib Translation-en [14 B]  
Get:13 http://security.debian.org wheezy/updates/main Translation-en [227 kB]         
Get:14 http://security.debian.org wheezy/updates/non-free Translation-en [14 B]       
Get:15 http://ftp.debian.org wheezy/contrib amd64 Packages [42.0 kB]
Get:16 http://ftp.debian.org wheezy/non-free amd64 Packages [80.8 kB]
Get:17 http://ftp.debian.org wheezy/main i386 Packages [5857 kB]
Get:18 http://ftp.debian.org wheezy/contrib i386 Packages [42.3 kB]                                                                                                                           
Get:19 http://ftp.debian.org wheezy/non-free i386 Packages [77.6 kB]                                                                                                                          
Get:20 http://ftp.debian.org wheezy/contrib Translation-en [34.8 kB]                                                                                                                          
Get:21 http://ftp.debian.org wheezy/main Translation-en [3846 kB]                                                                                                                             
Get:22 http://ftp.debian.org wheezy/non-free Translation-en [66.1 kB]                                                                                                                         
Fetched 17.2 MB in 11s (1444 kB/s)                                                                                                                                                            
Reading package lists... Done
W: There is no public key available for the following key IDs:
9D6D8F6BC857**06
W: There is no public key available for the following key IDs:
7638D0442B90**10

解决命令,我是单条输入,应该可以多条同时输入

root@localhost:~# sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 9D6D8F6BC857**06
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.mZzL1FD9Mr --trustdb-name /etc/apt//trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-stable.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-squeeze-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-squeeze-stable.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-wheezy-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-wheezy-stable.gpg --recv-keys --keyserver keyserver.ubuntu.com 9D6D8F6BC857C906
gpg: requesting key C857C906 from hkp server keyserver.ubuntu.com
gpg: key C857C906: public key "Debian Security Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
root@localhost:~# sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 7638D0442B90<span style="font-family: Arial, Helvetica, sans-serif;">**</span><span style="font-family: Arial, Helvetica, sans-serif;">10</span>
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.rt1g675do6 --trustdb-name /etc/apt//trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-stable.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-squeeze-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-squeeze-stable.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-wheezy-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-wheezy-stable.gpg --recv-keys --keyserver keyserver.ubuntu.com 7638D0442B90D010
gpg: requesting key 2B90D010 from hkp server keyserver.ubuntu.com
gpg: key 2B90D010: public key "Debian Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)




<think>好的,我现在需要解决用户遇到的缺少公钥F42ED6FBAB17C654的问题。根据用户提供的引用信息,我需要整理出可行的解决方案,并确保按照用户的要求用中文回答,结构清晰,步骤明确。 首先,我应该回顾用户提供的四个引用内容,看看每个引用提供了什么方法。引用[3]提到使用apt-key命令从Ubuntu的密钥服务器导入公钥,具体命令是sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654。不过注意到用户提供的引用[3]中的命令里公钥写成了F42ED6FB17C654,可能少了一个AB,这里需要确认正确性。用户的问题中的公钥是F42ED6FBAB17C654,所以正确的应该是这个。 然后引用[4]给出的是使用curl下载ROS的密钥文件并保存到指定位置,命令是sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg。这个方法可能更适用于ROS相关的软件源,可能是一个替代方法。 另外,用户提到在引用[2]中,执行sudo apt-get update时出现公钥错误,而引用[1]中说明正确添加公钥后会看到相关输出。因此,解决方案需要包括导入正确的公钥,然后更新软件包列表。 接下来,我需要将这些方法整合成一个步骤化的解决方案。可能有两种方法:一种是使用传统的apt-key命令,另一种是使用curl下载密钥文件到安全目录。需要注意,apt-key在较新的Ubuntu版本中可能已被弃用,所以推荐使用第二种方法更安全。 因此,步骤可能分为两种:方法一使用apt-key(虽然可能过时但可能有效),方法二使用下载到/etc/apt/trusted.gpg.d/或者/usr/share/keyrings/目录,后者更符合当前最佳实践。但根据引用[4],保存到/usr/share/keyrings/并使用gpg --dearmor处理可能更合适,不过用户提供的引用[4]中的命令没有使用--dearmor,直接保存为.gpg文件,可能需要检查是否正确。 另外,用户的问题是关于ROS的,所以可能第二种方法是针对ROS的特定解决方案,而第一种方法是通用的。需要明确说明这两种方法的适用情况。 最后,在验证步骤中,用户需要再次运行sudo apt update来确认问题是否解决,如果没有错误信息,说明成功。 需要确保每个步骤的命令正确无误,公钥的ID正确,路径正确,并且注意事项中提到安全性和版本兼容性。例如,如果用户系统不支持apt-key,可能需要采用第二种方法,或者使用gpg命令导入。 可能还需要检查是否有拼写错误,比如公钥中的AB是否遗漏,或者在引用[3]中的命令是否正确。根据用户的问题,公钥是F42ED6FBAB17C654,所以步骤中的命令必须包含完整的公钥ID。 总结,解决方案应包括两种方法,并说明注意事项,确保用户能顺利执行。</think>### 解决方案:添加公钥 `F42ED6FBAB17C654` 以下是两种常用方法,适用于Ubuntu/Debian系统: --- #### **方法一:通过`apt-key`直接添加公钥** 1. **导入公钥** 执行以下命令从Ubuntu密钥服务器获取公钥: ```bash sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654 ``` [^3] 2. **更新软件包列表** 导入成功后,运行更新命令: ```bash sudo apt-get update ``` 若终端不再报错 `NO_PUBKEY F42ED6FBAB17C654`,则说明公钥已生效[^2]。 --- #### **方法二:通过下载密钥文件(推荐)** 1. **下载ROS密钥文件** 使用`curl`直接下载ROS官方密钥到安全目录: ```bash sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg ``` [^4] 2. **更新软件源** 确保软件源配置文件中引用了该密钥路径(通常在`/etc/apt/sources.list.d/ros-latest.list`中),然后执行: ```bash sudo apt-get update ``` --- #### **验证是否成功** - 若终端输出包含 `F42ED6FBAB17C654` 的验证信息,或无相关报错,则表明公钥已正确添加[^1]。 --- #### **注意事项** 1. **系统兼容性** - `apt-key` 在较新Ubuntu版本中已被弃用,若方法一无效,优先使用方法二。 2. **密钥来源可信性** ROS官方密钥通过HTTPS下载,可确保安全性[^4]。 3. **路径权限问题** 若下载密钥时提示权限错误,可在命令前加`sudo`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值