79

我使用的是 R 版本 2.13,并且想更新到较新的版本,以便使用一些依赖于 R>= 2.14 的包。

我在我的 sources.list 文件中找到了此处描述的行。然后我导航到终端并输入:

sudo apt-get update

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

阅读包裹清单...完成

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

知道如何调试此错误吗?

4

10 回答 10

86

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

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 
于 2014-06-28T03:15:13.953 回答
46

就像@Ben Bolker 评论的那样(对不起,我劫持了您的评论,但尚未发布正确的答案),在debian 软件包 repo的描述中,有一个部分secure apt说:

安全的 APT

CRAN 上的 Debian 反向移植档案使用密钥“Johannes Ranke (CRAN Debian archive)”签名,密钥 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。

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

于 2012-04-21T16:02:14.563 回答
39
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYID

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

于 2014-07-14T08:13:50.457 回答
17

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

尝试这个:

gpg --keyserver pgpkeys.mit.edu --recv-key 51716619E084DAB9  
gpg -a --export 51716619E084DAB9 | sudo apt-key add -
于 2015-08-17T09:13:50.327 回答
5

这是一步一步的答案,可能更容易理解。

  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
    

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

于 2015-04-24T14:07:12.430 回答
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

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

y-ppa-manager

点击“高级”

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

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

sudo apt-get update
于 2015-07-29T00:38:26.607 回答
4

就像上面发布的其他人一样,这个单行代码似乎在 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
于 2016-09-21T23:31:35.393 回答
1

这解决了我的问题

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

于 2018-03-29T08:14:20.460 回答
1

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

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

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

于 2020-12-03T04:37:56.550 回答
0

最简单的解决方法是按照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/"
于 2021-08-10T10:56:27.450 回答