我正在关注official sbt install instructions。
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
Executing: /tmp/apt-key-gpghome.uRI0yiusG0/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
gpg: keyserver receive failed: Invalid argument
编辑:
我尝试挖掘执行的gpg.1.sh脚本。这是对gpg的最终调用。
$ sudo cat /tmp/apt-key-gpghome.IRnmlx6hfX/gpg.0.sh
#!/bin/sh
exec 'gpg' --ignore-time-conflict --no-options --no-default-keyring \
--homedir '/tmp/apt-key-gpghome.IRnmlx6hfX' --no-auto-check-trustdb --trust-model always "$@"
编辑2:
我尝试直接从密钥服务器中查询密钥,但是没有运气。参见http://keyserver.ubuntu.com/pks/lookup?search=2EE0EA64E40A89B84B2DF73499E82A75642AC823&op=vindex。密钥可能丢失了吗?
编辑3:
我在2月24日再次尝试,现在可以使用!
答案 0 :(得分:4)
给出命令
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
我得到了错误
Executing: /tmp/apt-key-gpghome.DKOlZn67Q0/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
gpg: ricezione dal server di chiavi non riuscita: Dati assenti
(无数据)
我以这种方式解决了(装有Ubuntu 18.04.1的笔记本电脑,在没有身份验证的公司代理后面):
gpg --receive-keys 99E82A75642AC823
sudo apt-key add sbt-key
导入答案 1 :(得分:2)
有同样的问题。两个ubuntu 18.04.1盒子。一个是最近安装的,另一个是从16.04.5升级的。在第一个中,我可以导入密钥来毫无问题地安装Scala&R。在第二个步骤中,导入过程失败,并显示与您相同的错误。
似乎gpg导入了启动dirmng守护程序的密钥。此过程是通过网络与keyserver.ubuntu.com通信的过程。
为解决该问题,我在gpg之前通过以下方式启动了dirmng:
sudo -i
dirmngr --daemon --homedir /root/key --debug-level guru --log-file dirmng.log
gpg -vv --debug-level 9 --ignore-time-conflict --no-options --no-default-keyring --homedir '/root/key' --no-auto-check-trustdb --trust-model always --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
然后gpg显示带有dirmngr的对话框:
gpg: DBG: chan_3 -> KEYSERVER --clear hkp://keyserver.ubuntu.com:80
gpg: DBG: chan_3 <- OK
gpg: DBG: chan_3 -> KS_GET -- 0x2EE0EA64E40A89B84B2DF73499E82A75642AC823
gpg: DBG: chan_3 <- ERR 167804976 Invalid argument <Dirmngr>
gpg: keyserver receive failed: Invalid argument
gpg: DBG: chan_3 -> BYE
并且dirmngr日志文件显示解决keyserver.ubuntu.com的错误:
2018-09-07 11:44:34 dirmngr[16174.6] DBG: chan_6 <- KS_GET -- 0x2EE0EA64E40A89B84B2DF73499E82A75642AC823
2018-09-07 11:44:39 dirmngr[16174.6] resolving 'keyserver.ubuntu.com' failed: Invalid argument
2018-09-07 11:44:39 dirmngr[16174.6] number of system provided CAs: 133
2018-09-07 11:44:44 dirmngr[16174.6] resolving 'keyserver.ubuntu.com' failed: Invalid argument
2018-09-07 11:44:44 dirmngr[16174.6] can't connect to 'keyserver.ubuntu.com': host not found
2018-09-07 11:44:44 dirmngr[16174.6] error connecting to 'http://keyserver.ubuntu.com:80': Invalid argument
2018-09-07 11:44:44 dirmngr[16174.6] command 'KS_GET' failed: Invalid argument
为什么一个连接到同一网络的盒子无法从dirmngr解析keyserver.ubuntu.com而新的盒子成功了?为什么在较旧的框中可以使用nslookup解析keyserver.ubuntu.com但dirmngr无法解决?我不知道。但是,两个框之间的区别在于/etc/resolv.conf。我已经添加了谷歌DNS服务器。从resolv.conf中删除它们使dirmngr起作用。
nameserver 127.0.0.53
#nameserver 8.8.8.8
#nameserver 8.8.4.4
此更改后,apt-key起作用。希望这会有所帮助。
答案 2 :(得分:2)
这通常是由防火墙阻止端口11371引起的。您可以取消阻止防火墙中的端口。如果您没有访问防火墙的权限,则可以:
强制它使用端口80而不是11371
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 94558F59
或者 从密钥服务器中找到并打开密钥。 将其内容复制到文本文件中。 转到系统工具>首选项>软件源>身份验证>添加密钥,然后选择创建的文本文件。对于Ubuntu 14.04和更高版本,请尝试:软件中心->编辑->软件源->身份验证->导入密钥文件
答案 3 :(得分:0)
在SBT官方文档中有this note:
注意:已有关于使用Ubuntu的SSL错误的报告:服务器访问错误:java.lang.RuntimeException:意外错误:java.security.InvalidAlgorithmParameterException:trustAnchors参数必须为非空url = https://repo1.maven.org/maven2/org/scala-sbt/sbt/1.1.0/sbt-1.1.0.pom,显然源自于使用/ etc / ssl / certs / java / cacerts cert-bug的PKCS12格式的OpenJDK 9。根据{{3}},该问题已在Ubuntu Cosmic(18.10)中修复,但Ubuntu Bionic LTS(18.04)仍在等待发布。请参阅答案以解决问题。
根据https://stackoverflow.com/a/50103533/3827,此问题已在 Ubuntu 18.04.1 中得到解决。