验证并添加 apt 的公钥

验证并添加 apt 的公钥

我尝试获取适用于 Ubuntu 的官方 mongodb,按照以下说明操作:http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages

在我的源中添加该deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen行后,我需要添加 pgp 密钥,因为 synaptic 说

W: GPG error: http://downloads-distro.mongodb.org dist Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9ECBEC467F0CEB10

再次按照说明,我执行了 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

这说

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 keyserver.ubuntu.com --recv 7F0CEB10
gpg: requesting key 7F0CEB10 from hkp server keyserver.ubuntu.com
?: keyserver.ubuntu.com: Connection refused
gpgkeys: HTTP fetch error 7: couldn't connect: Connection refused
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

有趣的是,我也得到了

$ apt-key list
gpg: fatal: /home/myname/.gnupg: directory does not exist!
secmem usage: 0/0 bytes in 0/0 blocks of pool 0/32768

我怎样才能使用这个来源? 更新 只需复制网页上的密钥即可http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages比如说 k.txt 然后执行

sudo apt-key add k.txt

有效!另外,apt-key 列表需要 sudo。

但是,这仍然没有告诉我为什么 apt-get 无法从 keyserver.ubuntu.com 获取密钥

答案1

gpg可能正在使用被你的(或上游的)防火墙阻止的端口。从这一页我通过谷歌搜索“keyserver.ubuntu.com:连接被拒绝”找到了它:

Ubuntu 个人软件包存档 (PPA) 是开发人员通过 Debian 的出色软件包管理器 APT 向普通用户(比如我自己)提供其源软件包的简便方法。默认存储库中的软件包通常已过期,开发人员已发布较新版本,这些版本可能已修复严重错误。为了确保 ppa 是可信的,使用 gpg 上的加密连接。但是,apt 默认通过端口 11371 进行连接,如果您位于公司防火墙后面,则可能会被阻止。

该错误在 11.04 中已默认修复,作者引用了几个可能的临时修复方法。如果不是,那么 keyserver.ubuntu.com 可能因某种原因而瘫痪了?

答案2

sudo apt-get 添加 k.txt

应该

sudo apt-key 添加 k.txt

相关内容