混合 deps.get 失败(似乎缺少 ssl?)

Posted

技术标签:

【中文标题】混合 deps.get 失败(似乎缺少 ssl?)【英文标题】:mix deps.get failed (seems missing ssl?) 【发布时间】:2016-05-12 06:54:14 【问题描述】:

很抱歉,我是 Elixir 的新手。在构建 phoenix 应用程序时,mix deps.get 失败并出现错误。

% mix deps.get
Could not find Hex, which is needed to build dependency :phoenix
Shall I install Hex? [Yn] y
** (MatchError) no match of right hand side value: :error, :ssl, 'no such file or directory', 'ssl.app'
    (mix) lib/mix/utils.ex:409: Mix.Utils.read_httpc/1
    (mix) lib/mix/utils.ex:354: Mix.Utils.read_path/2
    (mix) lib/mix/local.ex:107: Mix.Local.read_path!/2
    (mix) lib/mix/local.ex:86: Mix.Local.find_matching_versions_from_signed_csv!/2
    (mix) lib/mix/tasks/local.hex.ex:23: Mix.Tasks.Local.Hex.run/1
    (mix) lib/mix/dep/loader.ex:140: Mix.Dep.Loader.with_scm_and_app/4
    (mix) lib/mix/dep/loader.ex:98: Mix.Dep.Loader.to_dep/3
    (elixir) lib/enum.ex:1043: anonymous fn/3 in Enum.map/2
%

erlang 和 elixir 已通过 kerl 和 asdf 安装。 我的安装日志在这里http://otiai10.hatenablog.com/entry/2016/02/03/154953

环境

MacOS:10.11.2 二郎:18.0 灵药:1.1.1

发生了什么,我该怎么办?

【问题讨论】:

你能通过运行“mix local.hex”手动安装hex吗? 感谢您的评论!运行 mix local.hex 给出相同的错误输出:( 安装 Hex 时似乎出现错误,对吗? 好像是这样。也许你安装了没有 SSL 的 Erlang。然后你应该明确安装“erlang-ssl”包。 “asdf”手册还说您应该“OS X:通过自制软件安装这些 automake autoconf openssl libyaml readline libxslt libtool unixodbc”。也许这会有所帮助。 谢谢!我尝试使用--enable-dynamic-ssl-lib 选项构建Erlang,但结果相同。那我想试试--with-ssl,但是你知道在MacOS上哪里可以指定openssl lib PATH吗? --with-ssl=/usr/local/opt/openssl 【参考方案1】:

我没有使用 asdf 并且遇到了同样的问题。我通常使用 brew,但对于 erlang,我使用的是 evm,所以我可以有多个版本。

这似乎对我有所帮助: https://github.com/robisonsantos/evm/issues/28

我正在使用 EVM,需要将其指向 openssl 以使 mix deps.get 工作。就我而言,我使用的是 OTP 21.2,所以我这样做了:

evm uninstall OTP_21.2
evm install OTP_21.2 --with-ssl=/usr/local/opt/openssl

在那之后,世界一切都好。一旦我这样做了,我就可以运行mix deps.get

【讨论】:

【参考方案2】:

如果你没有使用 kerl 而你已经使用了 brew install openssl,他们会在 asdf 中添加 ERLANG_OPENSSL_PATH 选项,这样你就可以这样做了

asdf plugin-update erlang
ERLANG_OPENSSL_PATH="/usr/local/opt/openssl" asdf install erlang 21.1

【讨论】:

【参考方案3】:

正如@biletskyy 回答的那样,通过 kerl 安装的 Erlang 上缺少 SSL,这与通过 brew 不同。

如果你想通过 kerl 使用 ssl 构建 Erlang,你应该像下面这样传递KERL_CONFIGURE_OPTIONS

KERL_CONFIGURE_OPTIONS="--with-ssl=/usr/local/opt/openssl" kerl build 18.0 18.0-foo

然后通过 asdf 安装 Elixir。 mix 命令会很好用。

感谢@biletskyy

【讨论】:

asdf erlang 插件页面将此列为在 OSX 上安装 erlang 时的陷阱:github.com/asdf-vm/…

以上是关于混合 deps.get 失败(似乎缺少 ssl?)的主要内容,如果未能解决你的问题,请参考以下文章

由于缺少 SSL 加密,连接到 SQL Azure 数据库失败

Alamofire SSL 失败

如果缺少环境变量,则 Gatsby 构建失败

似乎在 Google Play 服务更新之后,使用 ION 进行 HTTPS 请求的 Android 应用程序失败

pip3 install xxx 失败查找步骤

CakePHP 2.0 添加相关数据失败,缺少数据库表