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

无法安装Elixir应用依赖:执行mix deps.get触发Segmentation fault:11

排查解决Elixir mix deps.get Segmentation Fault:11的方法

我之前在OSX环境下也碰到过类似的段错误问题,结合你的场景(移除依赖后可正常运行),大概率是旧版本依赖与当前Erlang/Elixir版本或系统环境不兼容导致的,给你几个按优先级排序的排查方向:

1. 先确认版本兼容性问题

你的Elixir指定的是~>1.3,而依赖的poison: "~>1.3"是2015年的旧版本,它仅兼容Erlang/OTP 17-19系列。如果你的Erlang版本是OTP 20及以上,就会出现底层API不兼容的情况,触发内存段错误。

先运行命令查看当前Erlang版本:

elixir -v

如果Erlang版本是OTP 20+,更推荐升级Poison版本(而非降级Erlang),因为新版本依赖会修复更多兼容性问题。

2. 升级Poison到兼容版本

Elixir 1.3完全支持Poison 3.x系列(最低兼容Elixir 1.2),把mix.exs里的依赖配置修改为:

defp deps do
  [{:poison, "~> 3.0"}]
end

然后执行以下命令清理旧缓存并重新安装:

mix clean
rm -rf deps _build
mix deps.get

旧版本Poison可能使用了Erlang新版本已移除的底层特性,或与OSX 10.13的系统库存在冲突,升级后基本能解决问题。

3. 彻底清理Mix缓存与构建产物

如果升级依赖后仍报错,可能是缓存的损坏文件导致的,执行以下命令彻底清理:

mix clean --all
rm -rf ~/.mix/archives
rm -rf deps _build

之后重新执行mix deps.get && mix compile,重新生成所有依赖和构建文件。

4. 重新安装Erlang(针对Homebrew安装的情况)

如果你的Erlang是通过Homebrew安装的,可能存在编译时的系统适配问题,重新安装Erlang确保它是针对当前OSX版本编译的:

brew uninstall erlang
brew install erlang

安装完成后再尝试执行mix deps.get。

5. 限制Erlang异步线程池(备选方案)

极少数情况下,Erlang的异步线程池会和OSX的系统线程机制冲突,尝试关闭异步线程池再执行命令:

iex --erl "+A 0" -S mix deps.get

如果这个命令能正常执行,说明是线程池相关的冲突,可以后续在项目配置里调整Erlang参数。


内容的提问来源于stack exchange,提问作者paul h

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:15:25