混合 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 数据库失败