【问题标题】:Nonzero [error] code on gpg: keyserver receive failed: Cannot assign requested addressgpg 上的非零 [错误] 代码:密钥服务器接收失败:无法分配请求的地址
【发布时间】:2020-06-12 20:11:02
【问题描述】:
我收到有关使用 Python 3.7.7 构建 Debian:stretch-slim Docker 映像的消息:
gpg: keyserver receive failed: Cannot assign requested address
The command '/bin/sh -c set -ex [...]'
[...] returned a non-zero code: 2
我认为这是 GPG 或网络问题。
有什么建议吗?非常感谢您的帮助。
【问题讨论】:
标签:
python
docker
debian
gnupg
【解决方案1】:
根据 Laurent Sittler 的 recommendation,解决方案是向 gpg 服务器添加选项。
在 Dockerfile 中找到这一行:
&& gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" \
并用这个块替换它:
&& ( \
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" \
|| gpg --batch --keyserver pgp.mit.edu --recv-keys "$GPG_KEY" \
|| gpg --batch --keyserver keyserver.pgp.com --recv-keys "$GPG_KEY" \
) \
【解决方案2】:
更新:代码中的任何更改都无效。您需要再次运行您的代码,直到它工作(或者您在 if 语句中添加更多下载位置以通过,以减少您无法下载的机会);请参阅此线程的其他答案。
我只是将以下旧部分留在这里,以证明任何安慰剂代码更改都对我没有帮助,它是随机的,并且在每次第一次运行时都会奇怪地出现,而在第二次运行时,它通常会起作用。
运行
sudo apt-get update
在你运行之前
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0F164EEB
如果您在此之前有一个“回声”行,请在此之前运行 另一个 sudo apt-get update:
RUN apt-get update
RUN sh -c 'echo "..." > /etc/...'
RUN apt-get update
RUN apt-key adv ...
这样,我摆脱了类似的错误“无法分配请求的地址”:
Executing: /tmp/apt-key-gpghome.Up2U8vHXpt/gpg.1.sh --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key C1CF6E31E6
gpg: keyserver receive failed: Cannot assign requested address
ERROR: Service 'listener' failed to build: The command '/bin/sh -c apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key C1CF6E31E6' returned a non-zero code: 2
很可能:服务器正忙,请重试
不过,这可能是一种安慰剂,因为this answer to the same error, but in another context 表示这可能会在地址正忙时出现。这意味着:如果您遇到此错误,请再试一次,然后sudo apt-get update 可能不会改变任何东西。这听起来很有可能。