我是否必须添加用于安装 R 的存储库的公钥?

我是否必须添加用于安装 R 的存储库的公钥?

我跟随https://cloud.r-project.org/bin/linux/ubuntu/README.html安装 R

$ echo "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/" | sudo tee -a /etc/apt/sources.list
$ sudo apt-get update
...
Err:14 https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/ InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 51716619E084DAB9
Reading package lists... Done 
E: The repository 'http://ppa.launchpad.net/adrozdoff/emacs/ubuntu bionic Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
N: Skipping acquire of configured file 'contrib/binary-i386/Packages' as repository 'https://download.virtualbox.org/virtualbox/debian bionic InRelease' doesn't support architecture 'i386'
W: GPG error: https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/ InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 51716619E084DAB9
E: The repository 'https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/ InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
...
$ sudo apt-get install r-base

错误消息是否apt-get update意味着我必须添加存储库的公钥?

如果我放弃它,会有什么后果?

我为啥还能跑apt-get install r-base

为什么以下操作会失败?

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 51716619E084DAB9
Executing: /tmp/apt-key-gpghome.Z9eYn6e4zV/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 51716619E084DAB9
gpg: keyserver receive failed: Server indicated a failure

谢谢。

答案1

提到的存储库适用于 R 的 UBUNTU 软件包包括最新版本 3.6。但是,对于 18.04,Ubuntu 的 Universe 存储库仍有v3.4。即使您不添加 R 的官方存储库,您仍然可以安装 r-base,但显然那将是 v3.4。

错误消息是否apt-get update意味着我必须添加存储库的公钥?

如果您想继续使用该存储库,请点选“是”。APT 是一种非常安全的软件包管理工具。它使用该公钥来验证下载的软件包。如需完整文档,请阅读SecureAPT - Debian

如果我放弃它,会有什么后果?

APT 将继续抱怨,您将无法从 R 的官方存储库下载软件包。

我为啥还能跑apt-get install r-base

因为 r-base 也在 Ubuntu 的 Universe 存储库中。你可以运行apt-cache policy r-base来检查你将从哪个存储库获得哪个版本。

为什么以下操作会失败?

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 51716619E084DAB9
Executing: /tmp/apt-key-gpghome.Z9eYn6e4zV/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 51716619E084DAB9
gpg: keyserver receive failed: Server indicated a failure

似乎是服务器端的临时问题。我尝试使用相同的命令添加密钥,成功了。

答案2

我发现在谷歌上查看(西班牙语):

正如我在控制台日志中看到的,您必须添加一些键(不仅与 R 相关的,也许其他的与程序的依赖关系有关)

该页面说的是有关密钥管理器的内容,可以稍微解决添加密钥的问题:

你应该做这个:

$ sudo apt-get install add-apt-key

然后:

$ sudo su -
# add-apt-key --keyserver keyserver.ubuntu.com 51716619E084DAB9

我也找到了另一种方法这里(英语,askubuntu 论坛;参见已接受的答案)

我希望这可以解决您的问题。

答案3

签署您的存储库只是确保其安全和验证软件包的另一种方式。官方存储库始终会有一个 gpg 密钥。如果您拥有一个存储库,您可以选择是否要在组织中维护证书和签名方法。

默认情况下,apt 会始终查找 gpg,如果没有 gpg,它将忽略存储库的内容。您可以通过--allow-unauthenticated向 apt-get 添加选项来跳过 gpg 检查。这需要 sudo 操作。

例子:sudo apt-get --allow-unauthenticated upgradesudo apt-get -y --allow-unauthenticated install foo

您也可以使用/etc/apt/apt.conf.d/目录中您自己的配置文件使此选项永久生效。

在您的 conf 文件中只需添加APT::Get::AllowUnauthenticated "true";节。

答案4

我可以通过以下提供的说明解决这个问题(2021 年 1 月)这里在 r 项目中网站。摘要如下:

$ sudo apt-key adv --keyserver keys.gnupg.net --recv-key 'E19F5F87128899B192B1A2C2AD5F960A256A04AF'

但是它失败了:“gpg:密钥服务器接收失败:服务器指示失败”
根据 r-project 网站的信息,这可能是由于“防火墙阻止了端口 11371”造成的。在这种情况下,可以采取以下措施:

  1. 搜索0xE19F5F87128899B192B1A2C2AD5F960A256A04AFhttps://keyserver.ubuntu.com
  2. 复制点击以 开头的行中的链接时显示的关键块酒吧(将密钥以 -----BEGIN PGP PUBLIC KEY BLOCK----- 开头)复制到以 *.asc 结尾的纯文本文件中(例如:file_with_key.asc)
  3. 在存储 *.asc 文件的目录中运行:
$ sudo apt-key add file_with_key.asc

4[编辑]。添加 reppositroy。这里有点棘手。命令的公式是:

$ sudo add-apt-repository 'A_url'

我找到了不同的选项,例如
deb https://cloud.r-project.org/bin/linux/debian buster-cran35/
deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/
deb http://cloud.r-project.org/bin/linux/debian buster-cran40/
等。具体取决于您想要的系统和版本。5
. 安装 R

$ sudo apt-get update # Here you should see the cloud.r-project 
$ apt-get install r-base r-base-dev
  1. 检查 R 版本
$ R --version

相关内容