繁体   English   中英

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

[英]Installing R from CRAN Ubuntu repository: No Public Key Error

我使用的是 R 版本 2.13,并希望更新到更新版本,以便使用一些依赖于 R>= 2.14 的软件包。

我行我的sources.list文件FOUND描述这里 然后我导航到终端并输入:

sudo apt-get update

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

阅读包裹清单...完成

W:GPG 错误: http ://lib.stat.cmu.edu oneiric/ 发布:无法验证以下签名,因为公钥不可用:NO_PUBKEY 51716619E084DAB9

知道如何调试这个错误吗?

对我有用的最简单的解决方案来自 此线程中的Emre Sahin:

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

就像@Ben Bolker 评论的一样(对不起,我劫持了你的评论,但正确的答案还没有发布),在 debian 包 repo的描述中有一个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搜索 0x381BA480 /http://pgp.mit.edu/并将密钥块复制到纯文本文件中,例如命名为 jranke_cran.asc。

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

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

apt-key 添加 jranke_cran.asc 作为 root。

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

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

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

感谢Philipp Burckhardt ,我把它修好了。

试试这个:

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

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

  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)
  2. 添加密钥(需要超级用户访问):

     gpg -a --export E084DAB9 | sudo apt-key add -
  3. 更新存储库:

     sudo apt-get update

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

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

2) 然后通过运行 Y PPA Manager 获取丢失的密钥:

y-ppa-manager

点击“高级”

接下来,单击“尝试导入丢失的 GPG 密钥”

最后,再次更新以检查它是否有效:

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

这解决了我的问题

$ wget -q -O - https://archive.kali.org/archive-key.asc | apt-key add

它必须为密钥使用更长的标识符。

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

问题似乎是服务器上的密钥 ID 重复。 请参阅CRAN 中的说明以及 Michael Rutter 这篇文章的更多背景信息。

最简单的解决方法是简单地按照https://cran.r-project.org/bin/linux/ubuntu/ 中的说明进行操作。 以 sudo 身份运行:

# update indices
apt update -qq
# install two helper packages we need
apt install --no-install-recommends software-properties-common dirmngr
# add the signing key (by Michael Rutter) for these repos
# To verify key, run gpg --show-keys /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc 
# Fingerprint: 298A3A825C0D65DFD57CBB651716619E084DAB9
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
# add the R 4.0 repo from CRAN -- adjust 'focal' to 'groovy' or 'bionic' as needed
add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM