You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac M2执行Mix命令遇SSL相关错误,求解决方案

解决MacBook Pro M2(Rosetta终端)下Mix命令SSL启动失败问题

可能的错误原因

  • OTP 26与OpenSSL 3.1.2在Rosetta模拟环境下存在兼容性适配问题,Erlang的ssl模块初始化时无法正确加载OpenSSL库,导致ssl_app启动失败,进而引发后续模块编译相关的ArgumentError和MatchError。
  • asdf安装Erlang时未明确指定OpenSSL的路径或编译参数,导致Erlang编译时未正确关联系统中的OpenSSL库。
  • Rosetta终端下的环境变量未正确配置,Erlang无法找到OpenSSL的头文件和库文件。

具体解决办法

1. 重新编译Erlang,指定OpenSSL 3.x路径

用asdf安装Erlang时,明确指定OpenSSL路径确保正确链接:

# 卸载当前OTP 26版本
asdf uninstall erlang 26.0

# 设置OpenSSL环境变量(确认OpenSSL 3.1.2安装路径为/usr/local/opt/openssl@3)
export KERL_CONFIGURE_OPTIONS="--with-ssl=/usr/local/opt/openssl@3"
export KERL_BUILD_DOCS="no"

# 重新安装并设置全局OTP 26
asdf install erlang 26.0
asdf global erlang 26.0

2. 配置Rosetta终端的OpenSSL环境变量

确保Rosetta终端(x86_64架构)下OpenSSL路径被优先识别:

# 验证当前OpenSSL路径
which openssl
# 预期输出:/usr/local/opt/openssl@3/bin/openssl

# 检查PATH顺序,确保OpenSSL 3.x路径在最前
echo $PATH

若路径不符,修改~/.zshrc(或~/.bashrc)添加以下配置:

export PATH="/usr/local/opt/openssl@3/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@3/include"
export PKG_CONFIG_PATH="/usr/local/opt/openssl@3/lib/pkgconfig"

执行source ~/.zshrc使配置生效。

3. 降级OpenSSL到1.1.x版本(备选方案)

如果OpenSSL 3.x仍存在兼容性问题,可尝试降级到OTP支持更稳定的1.1版本:

# 安装OpenSSL 1.1
brew install openssl@1.1

# 配置Erlang编译参数
export KERL_CONFIGURE_OPTIONS="--with-ssl=/usr/local/opt/openssl@1.1"

# 重新安装OTP 26
asdf uninstall erlang 26.0
asdf install erlang 26.0
asdf global erlang 26.0

4. 验证Erlang SSL模块状态

安装完成后,进入Erlang Shell确认ssl模块正常:

erl
> ssl:start().
% 返回ok则表示ssl模块启动正常
> ssl:versions().
% 应显示支持TLSv1.2、TLSv1.3等版本信息

验证通过后,执行mix deps.get测试问题是否解决。

内容的提问来源于stack exchange,提问作者Bhanwarlal Chaudhary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:40:11