我正在使用 Ubuntu 9.10,需要添加一些 apt 存储库。不幸的是,运行时我收到如下消息sudo apt-get update
:
W: GPG error: http://ppa.launchpad.net karmic Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5A9BF3BB4E5E17B5
W: GPG error: http://ppa.launchpad.net karmic Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1DABDBB4CEC06767
因此,我需要安装这些存储库的密钥。在 9.10 下,我们现在可以选择执行此操作:
sudo add-apt-repository ppa:nvidia-vdpau/ppa
看这篇 Ubuntu 帮助文章了解详情。
这很棒,只是我在防火墙后面的工作站上运行它,防火墙阻止了几乎所有端口的出站连接,除了运行 Windows 和 IE 的秘书所需的端口之外。
这里讨论的端口是hkp服务,端口11371。
似乎有办法手动下载密钥并将其安装在 apt 的密钥环上。甚至可能还有一种方法可以使用 add-apt-repository 或 wget 或其他程序从备用服务器下载密钥,使其在端口 80 上可用。
但是,我还没有找到一套简明的步骤来实现这一点。我正在寻找的是:
- 如何找到 apt-package 的公钥(建议使用具有这些资源的资源,和/或搜索技巧。到目前为止,搜索密钥哈希似乎并不是那么有效。)
- 如何检索密钥(可以使用 gpg 或 add-apt-repository 自动完成吗?)
- 如何将密钥添加到 apt 的密钥环中
提前致谢。
答案1
即将推出的 Ubuntu Natty 版本已修复此问题: https://launchpad.net/ubuntu/natty/+source/software-properties/0.78.1
使用旧版本的用户需要编辑 ppa.py:
sudo gedit /usr/lib/python2.6/dist-packages/softwareproperties/ppa.py
其中写道:
keyserver.ubuntu.com
改成:
hkp://keyserver.ubuntu.com:80
保存,退出,然后一切就绪。
答案2
sudo apt-key adv --keyserver keyserver.ubuntu.com --keyserver-options http-proxy=http://proxy:port --recv-keys KEYID
答案3
以下是我使用的一个解决方法:
我登录到了我们公司防火墙之外的自由世界的一台 Linux 服务器,然后执行以下操作:
gpg --keyserver keyserver.ubuntu.com --recv 1DABDBB4CEC06767 && gpg --export --armor 1DABDBB4CEC06767
然后在我的工作站上运行这个,并将上述命令(公钥)的输出粘贴到标准输入中,然后按 control-D:
sudo apt-key add -
然后我就可以sudo apt-get update
顺利运行了。
我仍然认为一定有更好的方法,最好是我可以编写脚本的方法。
答案4
您可以访问密钥服务器的网站,例如http://wwwkeys.eu.pgp.net/ 搜索密钥签名(需要在十六进制签名中添加 0x),即 0x1DABDBB4CEC06767。
单击您希望获得的链接并将文本粘贴到机器上的文件中,即
cat > <filename>
[PASTE]
[Ctrl-C]
然后
apt-key add <filename>
这对我来说很有效;看来我的工作代理阻止了很多“非标准”端口。