【问题标题】:Installing Erlang via asdf on Ubuntu fails after "Downloading kerl"在“下载 kerl”之后,在 Ubuntu 上通过 asdf 安装 Erlang 失败
【发布时间】:2021-01-13 08:19:07
【问题描述】:

背景

我有一个 Ubuntu,我正在尝试通过 asdf-erlang plugin 安装 Erlang 22.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”之后停止,然后什么也没有发生。就像它完成了一样。 在安装插件之前,我也遵循了before-asdf-install 的步骤,但是这并不能防止错误。

我该如何解决这个问题?

【问题讨论】:

    标签: erlang asdf-vm


    【解决方案1】:

    经过我和 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/代理。

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

    解决方案

    发现问题后,是时候寻找解决方案了。我认为最合适的解决方案是将公司证书添加到 ssl certs.pem。以下 SO 帖子对此进行了更好的描述:

    How to fix "SSL certificate problem: self signed certificate in certificate chain" error?

    快速解决方法

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

    https://ec.haxx.se/cmdline/cmdline-configfile#default-config-file

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

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

    不过,暂时我还是很乐意接受的。

    历史

    这是我与 Elixir 社区的整个讨论的总结。对全过程感兴趣的可以查看帖子:

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

    【讨论】:

      猜你喜欢
      • 2022-08-09
      • 2019-03-25
      • 2021-04-22
      • 2016-12-12
      • 2020-07-28
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多