从CRAN Ubuntu存储库安装R:无公钥错误

Bti*_*rt3 64 linux apt r

我在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)

  • +1这对我有用,但请注意我需要将密钥从E084DAB9(属于以前的维护者Michael Rutter)更改为381BA480(当前维护者Johannes Ranke) (3认同)
  • 更新3/22/2017:当前公钥是Michael Rutter 51716619E084DAB9 (3认同)

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.

如果您还没有这样做,这可能会解决您的问题.

  • 请注意,这个和@ManuelRamon的答案都依赖于旧密钥.用来自'apt-get update`的错误消息中的任何内容替换. (6认同)
  • 我不介意你劫持评论.当我懒得发表完整答案时,我发表评论...... (3认同)
  • 只是想确认来自SECURE APT部分的'剪切和粘贴'选项就像一个魅力:在http://keyserver.ubuntu.com:11371/搜索密钥(搜索Michael Rutter)并复制密钥到一个纯文本文件,比如key.txt.然后,使用sudo apt-key add key.txt将密钥提供给apt-key (2认同)

Sau*_*tel 28

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYID
Run Code Online (Sandbox Code Playgroud)

并将KEYID替换为错误消息中显示的数字.

  • 没错,因为密钥又变了,这次是`FCAE2A0E115C3D8A`。你的回答永远有效! (6认同)
  • Upvoted是因为这是简洁的解决方案. (2认同)

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

这是一个可能更容易遵循的分步答案。

  1. 获取密钥(警告消息中的最后 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)
  2. 添加密钥(需要超级用户访问):

    gpg -a --export E084DAB9 | sudo apt-key add -
    
    Run Code Online (Sandbox Code Playgroud)
  3. 更新存储库:

    sudo apt-get update
    
    Run Code Online (Sandbox Code Playgroud)

现在应该没有关于丢失密钥的警告。


Tol*_*ner 5

我遇到了同样的问题,我发现的唯一解决方案(可能是由于防火墙)是使用有用的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)