混合 deps.get 失败(似乎缺少 ssl?)
mix deps.get failed (seems missing ssl?)
抱歉,我是 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 and asdf 安装。
我的安装日志在这里 http://otiai10.hatenablog.com/entry/2016/02/03/154953
环境
- 苹果操作系统:10.11.2
- 二郎:18.0
- 长生不老药:1.1.1
发生了什么事,我该怎么办?
正如@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 命令会很好用。
如果您没有使用 kerl
而您已经使用 brew install openssl
,他们向 asdf 添加了 ERLANG_OPENSSL_PATH
选项,因此您可以使用
asdf plugin-update erlang
ERLANG_OPENSSL_PATH="/usr/local/opt/openssl" asdf install erlang 21.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
一旦我这样做了。
抱歉,我是 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 and asdf 安装。 我的安装日志在这里 http://otiai10.hatenablog.com/entry/2016/02/03/154953
环境
- 苹果操作系统:10.11.2
- 二郎:18.0
- 长生不老药:1.1.1
发生了什么事,我该怎么办?
正如@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 命令会很好用。
如果您没有使用 kerl
而您已经使用 brew install openssl
,他们向 asdf 添加了 ERLANG_OPENSSL_PATH
选项,因此您可以使用
asdf plugin-update erlang
ERLANG_OPENSSL_PATH="/usr/local/opt/openssl" asdf install erlang 21.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
一旦我这样做了。