在 Ubuntu 上通过 asdf 安装 Erlang 在 "Downloading kerl" 后失败



背景

我有一个Ubuntu,我正在尝试通过asdf-elang插件安装Erlang22.2.8。

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.1 LTS
Release:    20.04
Codename:   focal

问题

事实上,我想安装任何版本的Erlang,但都不起作用。

$ asdf install erlang 22.2.8
Downloading kerl...
$

它在";下载kerl";然后什么也没发生。它就像完成了一样。在安装插件之前,我已经遵循了asdf安装之前的步骤,但这并不能防止错误。

我该怎么解决这个问题?

经过我和Elixir社区的一些人的大量调查,我们终于发现了问题所在。

问题

第一条线索是命令本身的退出信号:

$ asdf install erlang 22.2.8
Downloading kerl...
$ echo $?
1

退出代码为1。这意味着发生了错误。

因此,在深入研究代码后,我们发现有一个我无法进行的curl调用:

$ curl -v -Lso ~/.asdf/plugins/erlang/kerl https://raw.githubusercontent.com/kerl/kerl/2.0.2/kerl
*   Trying 151.101.16.133:443...
* TCP_NODELAY set
* Connected to raw.githubusercontent.com (151.101.16.133) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [6 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [3400 bytes data]
* TLSv1.3 (OUT), TLS alert, unknown CA (560):
} [2 bytes data]
* SSL certificate problem: self signed certificate in certificate chain
* Closing connection 0

我遇到了SSL证书问题。这是因为VPN/Proxy公司。

使用-k选项可以找到一个快速修复/解决方法,允许curl连接到不安全的连接。在尝试了-k的旋度后,请求成功,证明了理论的正确性。

解决方案

随着问题的确定,是时候寻找解决方案了。我认为最合适的解决方案是将公司证书添加到ssl证书.pem中。这在下面的SO文章中有更好的描述:

如何修复";SSL证书问题:证书链中的自签名证书;错误

快速解决方法

然而,这个解决方案对我不起作用。所以我最终决定选择有风险的选项,那就是使用~/.curlrc

https://ec.haxx.se/cmdline/cmdline-configfile#default-配置文件

在设置了这个文件并在其中添加了-k选项之后,它就工作了。我现在终于可以安装我需要的erlang版本了。

需要注意的是,这是一种风险。事实上,这只是一种变通方法,而不是真正的解决方案

然而,就目前而言,我很乐意接受

历史

这是我与长生不老药社区进行的整个讨论的总结。如果你对整个过程感兴趣,你可以查看帖子:

https://elixirforum.com/t/installing-erlang-via-asdf-on-ubuntu-fails-after-downloading-kerl/36806/25

相关内容

  • 没有找到相关文章

最新更新