GPG error : signatures were invalid: NODATA1 NODATA2

本文提供了解决Ubuntu 12.04中使用apt-get更新时遇到GPG错误的问题的方法,通过执行一系列命令解决了安装g++的问题,并解释了可能的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

System:ubuntu 12.04

I can't install g++ through  apt-get install g++

so I try tu run apt-get update ,But I got this prompt

GPG error: http://deb.torproject.org precise Release: The following signatures were invalid: NODATA 1 NODATA 2

I changes my apt source from ont to one. But it didin't help

Finally I found the solution  here http://bbs.51cto.com/thread-954904-1.html


run this

sudo apt-get clean   
cd /var/lib/apt
sudo mkdir -p lists/partial    
sudo apt-get clean
sudo apt-get update     


It helpd, But I still don't understan why. But the problem was solved;


在使用 `sudo apt-get update` 时出现的 GPG 签名验证失败错误,例如: ``` GPG error: ... The following signatures were invalid: EXPKEYSIG F42ED6FBAB17C654 Open Robotics <info@osrfoundation.org> ``` 表明 APT 无法正确验证某个仓库的签名。这种情况通常由以下几种原因引起,并可通过相应方法解决。 --- ### 更新过期的仓库密钥 某些软件源(如 ROS)使用的 GPG 密钥可能已过期或变更。此时需要手动更新对应的密钥。可以通过如下命令从指定密钥服务器获取并添加新的密钥: ```bash curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - ``` 该命令会从 GitHub 获取 ROS 官方发布的签名密钥并将其添加到本地 APT 密钥环中,从而修复由于密钥过期导致的签名验证问题[^2]。 --- ### 指定密钥服务器重新获取密钥 如果系统中已经存在旧的密钥但无法通过默认方式更新,可以尝试通过指定密钥服务器手动刷新对应密钥。例如: ```bash sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 ``` 此命令将连接 Ubuntu 的公钥服务器并下载指定的密钥,确保其状态为“not changed”或“unchanged”,以确认密钥已被正确加载和更新[^1]。 --- ### 清除缓存后重试 有时 APT 缓存中的旧数据也可能导致签名验证失败。可尝试清除 APT 缓存后再运行更新命令: ```bash sudo apt clean sudo apt update ``` 这将删除本地存储的包索引文件并重新下载,有助于解决因缓存损坏引发的验证错误。 --- ### 禁用必要签名验证(临时方案) 若仅需临时绕过签名验证以便完成更新操作,可以在 `sources.list` 或相关源配置文件中添加 `trusted=yes` 参数: ```bash deb [trusted=yes] http://packages.ros.org/ros/ubuntu focal main ``` 此方法适用于测试环境或紧急情况,**建议长期使用**,因为它会降低系统的安全性。 --- ### 验证当前密钥状态 可以通过以下命令列出所有已导入的 APT 密钥,检查目标密钥是否仍然有效或是否需要更新: ```bash sudo apt-key list ``` 查找输出中 `F42ED6FBAB17C654` 对应的条目,确认其有效性及签发者信息是否匹配预期来源。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值