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

让我开始说我对Linux(Ubuntu)是完全新的,并与R一起工作。目前,我在R 2.13版本,并且想要更新到一个更新的版本,以便使用一些依赖于R> = 2.14的软件包。

我有我的sources.list文件中find这里描述的行。 然后我导航到terminal并input:

sudo apt-get update 

并尝试更新最接近我的CRAN镜像上的R时出现以下错误:

 Reading package lists... Done W: GPG error: http://lib.stat.cmu.edu oneiric/ Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 51716619E084DAB9 

由于我在Ubuntu下是R新手,所以我不确定如何debugging这个错误。

任何帮助都感激不尽。

像@Ben Bolker评论(抱歉,我劫持了你的评论,但正确的答案尚未公布),在Debian软件包回购的描述中有一个secure apt的部分说:

安全APT

CRAN上的Debian反向运行档案以“Johannes Ranke(CRAN Debian档案)”的密钥签名,密钥ID为381BA480。 你可以拿来这个

gpg –keyserver subkeys.pgp.net –recv-key 381BA480或者使用其他密钥服务器,

gpg –keyserver pgp.mit.edu –recv-key 381BA480如果这不起作用,可能是由于防火墙阻塞了端口11371.或者,您可以在http://keyserver.noreply.org上search0x381BA480。; /或http://pgp.mit.edu/并将密钥块复制到一个纯文本文件中,例如jranke_cran.asc。;

如果用gpg接收密钥确实有效,则需要将其导出到文本文件

gpg -a –export 381BA480> jranke_cran.asc在这两种情况下,您都需要通过运行apt系统来知道密钥

apt-key以root用户身份添加jranke_cran.asc。

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

对我来说最简单的解决scheme是来自Emre Sahin在这个线程 :

 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 
 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYID 

并用错误消息中显示的编号replaceKEYID。

感谢菲利普·伯克哈特 ( Philipp Burckhardt),我把它修好了……看看这里:或者干脆试试这个:

 gpg --keyserver pgpkeys.mit.edu --recv-key 51716619E084DAB9 gpg -a --export 51716619E084DAB9 | sudo apt-key add - 

我遇到了同样的问题,唯一的解决scheme,我发现,也许是由于防火墙,是使用有用的Y PPApipe理器。 下面的两个步骤已经在Ubuntu 15.04上工作了。

1)首先安装Y PPApipe理器:

 sudo add-apt-repository ppa:webupd8team/y-ppa-manager sudo apt-get update sudo apt-get install y-ppa-manager 

2)然后通过运行Y PPApipe理器来获取缺less的密钥:

 y-ppa-manager 

点击“高级”

接下来,点击“尝试导入缺less的GPG密钥”

最后,再次更新以检查它是否工作:

 sudo apt-get update 

这是一个可能更容易遵循的循序渐进的答案。

  1. 获取密钥(警告消息中的最后8位数字):

    gpg –keyserver pgp.mit.edu –recv-key E084DAB9

输出应该是这样的:

  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) 
  1. 为密钥创build一个文本文件:

    gpg -a –export E084DAB9> marutter.asc

  2. 添encryption钥(需要超级用户访问权限):

    sudo apt-key add marutter.asc

  3. 更新存储库:

    sudo apt-get update

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

和其他人一样,这一行似乎在Debian 6上运行良好:

 sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 381BA480 Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys 381BA480 gpg: requesting key 381BA480 from hkp server pgp.mit.edu gpg: key 381BA480: public key "Johannes Ranke (CRAN Debian archive) <jranke@uni-bremen.de>" imported gpg: no ultimately trusted keys found gpg: Total number processed: 1 gpg: imported: 1