我在R版本2.13上,并希望更新到更新版本,以便使用一些依赖于R> = 2.14的软件包.
我行我的sources.list文件中所描述这里.然后我导航到终端并键入:
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
尝试更新离我最近的CRAN镜像上的R时出现以下错误:
阅读包裹清单......完成
W:GPG错误:http://lib.stat.cmu.edu oneiric/Release:由于公钥不可用,无法验证以下签名:NO_PUBKEY 51716619E084DAB9
知道如何调试此错误吗?
ano*_*non 74
对我来说最简单的解决方案是Emre Sahin在这个帖子中:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
Run Code Online (Sandbox Code Playgroud)
Pau*_*tra 43
就像@Ben Bolker评论的那样(对不起我劫持了你的评论,但是还没有发布正确答案),在debian软件包repo 的描述中有一节secure apt
说:
安全APT
CRAN上的Debian backports档案使用密钥ID为381BA480的"Johannes Ranke(CRAN Debian档案)"密钥签名.你可以用它来获取
gpg --keyserver subkeys.pgp.net --recv-key 381BA480或者使用另一个密钥服务器,
gpg --keyserver pgp.mit.edu --recv-key 381BA480如果这不起作用,可能是由于防火墙阻塞端口11371.或者,您可以在http://keyserver.noreply.org搜索0x381BA480. /或http://pgp.mit.edu/并将密钥块复制到一个纯文本文件中,例如,命名为jranke_cran.asc.
如果使用gpg接收密钥确实有效,则需要将其导出到文本文件
gpg -a --export 381BA480> jranke_cran.asc在这两种情况下,您都需要通过运行使apt系统知道密钥
apt-key以root身份添加jranke_cran.asc.
如果您还没有这样做,这可能会解决您的问题.
Sau*_*tel 28
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYID
Run Code Online (Sandbox Code Playgroud)
并将KEYID替换为错误消息中显示的数字.
pet*_*ner 14
感谢Philipp Burckhardt,我解决了这个问题.
看看这里,或者只是试试这个:
gpg --keyserver pgpkeys.mit.edu --recv-key 51716619E084DAB9
gpg -a --export 51716619E084DAB9 | sudo apt-key add -
Run Code Online (Sandbox Code Playgroud)
小智 5
这是一个可能更容易遵循的分步答案。
获取密钥(警告消息中的最后 8 位数字):
gpg --keyserver pgp.mit.edu --recv-key E084DAB9
Run Code Online (Sandbox Code Playgroud)
输出应如下所示:
gpg: requesting key E084DAB9 from hkp server pgp.mit.edu
gpg: key E084DAB9: public key "Michael Rutter <marutter@gmail.com>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
Run Code Online (Sandbox Code Playgroud)添加密钥(需要超级用户访问):
gpg -a --export E084DAB9 | sudo apt-key add -
Run Code Online (Sandbox Code Playgroud)更新存储库:
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)现在应该没有关于丢失密钥的警告。
我遇到了同样的问题,我发现的唯一解决方案(可能是由于防火墙)是使用有用的Y PPA管理器.下面的两个步骤概述了Ubuntu 15.04.
1)首先安装Y PPA Manager:
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager
Run Code Online (Sandbox Code Playgroud)
2)然后通过运行Y PPA Manager获取缺失的密钥:
y-ppa-manager
Run Code Online (Sandbox Code Playgroud)
点击"高级"
接下来,单击"尝试导入缺少的GPG密钥"
最后,再次更新以检查它是否有效:
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)