我在R版本2.13上,并希望更新到更新版本,以便使用一些依赖于R> = 2.14的软件包。
我有我的sources.list文件的行,如上所述here。然后我导航到终端并输入:
sudo apt-get update
并在尝试更新离我最近的CRAN镜像上的R时出现以下错误:
阅读包裹清单......完成
W:GPG错误:http://lib.stat.cmu.edu oneiric / Release:由于公钥不可用,无法验证以下签名:NO_PUBKEY 51716619E084DAB9
知道如何调试此错误吗?
答案 0 :(得分:73)
对我有用的最简单的解决方案来自this thread的Emre Sahin:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
答案 1 :(得分:43)
喜欢@Ben Bolker发表评论(对不起我劫持了您的评论,但尚未发布正确的答案),在debian软件包回购的the description中,有一个部分secure apt
表示:
安全APT
CRAN上的Debian backports档案是用密钥签署的 “约翰内斯兰克(CRAN Debian档案)”与关键 ID 381BA480。您可以使用
获取此内容gpg --keyserver subkeys.pgp.net --recv-key 381BA480或 或者,使用另一个密钥服务器,
gpg --keyserver pgp.mit.edu --recv-key 381BA480如果没有 工作,可能是由于防火墙阻塞端口11371。 或者,您可以搜索0x381BA480 http://keyserver.noreply.org/或http://pgp.mit.edu/并将密钥块复制为纯文本 文件,例如命名为jranke_cran.asc。
如果使用gpg接收密钥确实有效,则需要将其导出到 文本文件
gpg -a --export 381BA480> jranke_cran.asc在这两种情况下你都需要 通过运行
使apt系统知道密钥apt-key以root身份添加jranke_cran.asc。
如果您还没有这样做,这可能会解决您的问题。
答案 2 :(得分:25)
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYID
并将KEYID替换为错误消息中显示的数字。
答案 3 :(得分:12)
感谢Philipp Burckhardt,我解决了这个问题。
Have a look here,或者只是尝试一下:
gpg --keyserver pgpkeys.mit.edu --recv-key 51716619E084DAB9
gpg -a --export 51716619E084DAB9 | sudo apt-key add -
答案 4 :(得分:5)
I encountered the same issue and the only solution I found, perhaps due to a firewall, was to use the helpful Y PPA Manager. The two steps below outline has worked on Ubuntu 15.04.
1) First install the Y PPA Manager:
x.id x.timestamp x.count
71 1 1435114605 61
74 1 1435114719 62
2) Then fetch missing keys by running the Y PPA Manager:
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager
Click "Advanced"
Next, click "Try to import missing GPG keys"
Finally, update again to check if it works:
y-ppa-manager
答案 5 :(得分: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
答案 6 :(得分:3)
以下是一个可能更容易理解的分步回答。
获取密钥(警告消息中的最后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)
为密钥创建文本文件:
gpg -a --export E084DAB9&gt; marutter.asc
添加密钥(需要超级用户访问权限):
sudo apt-key add marutter.asc
更新存储库:
sudo apt-get update
现在应该没有关于丢失钥匙的警告。
答案 7 :(得分:1)
这解决了我的问题
$ wget -q -O - https://archive.kali.org/archive-key.asc | apt-key add
答案 8 :(得分:0)
它必须为密钥使用更长的标识符。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
问题似乎是服务器上的密钥ID重复。 请参阅CRAN中的说明以及Michael Rutter在this post上的更多背景信息。
答案 9 :(得分: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/"