碰到过几次,搜索引擎找到命令输入莫名其妙地解决了,这次算是完全高清楚了。
尝试使用 gpg --auto-key-retrieve --verify
时,会发生『 keyserver receive failed 』的错误。
第一反应当然是需要过代理,然而并没有效果。
是 dirmngr 未启动,所以只要启动一下就好了。(原样照抄的,大约有一半内容其实不需要)
sudo pkill dirmngr; dirmngr --debug-all --daemon --standard-resolver
总之还是随便地把报错在网上寻找一番,在 StackOverflow 的某回答中找到上述命令。问题恰好解决了。
幸好,这次问题未解决前尝试过 gpg --debug-all
,一对比,有问题的时候根本没有 dirmngr 的 trace,而问题解决后有很多条 dirmngr 的 trace
man dirmngr
的信息显示,从 GnuPG 2.1 版本开始,与 OpenPGP 服务器的连接全部由 dirmngr 接管。
然后再看 dirmngr 在原生 Ubuntu 上是怎么运行起来的?
使用 systemd 的 .socket 单元按需启动。而众所周知地,WSL 无论 1/2 的 init 都不是 systemd 。
站内搜索了一下 gpg 和 wsl 仅有一处提及 apt-key add
类似问题。根据启动方式原因,大概不适用于 apt-key add
命令。
所以 Microsoft 什么时候能让 init 适配一下 systemd 或者干脆别自写 init 了?