Ubuntu系统下移除或降级Erlang:Phoenix框架兼容故障求助
解决Erlang/OTP 20升级后Phoenix异常及Erlang降级问题
我之前也踩过Erlang大版本升级导致Phoenix罢工的坑,这种兼容性问题确实挺闹心的,给你几个实用的解决方向:
一、先排查Phoenix与Erlang 20的兼容性
首先得确认你的Phoenix版本是否适配Erlang/OTP 20——不少旧版Phoenix(比如1.3之前的版本)对Erlang 20的支持不太好。你可以先这么操作:
- 打开项目根目录的
mix.exs文件,查看:phoenix的版本号。如果版本低于1.3.0,优先尝试升级Phoenix到兼容版本:mix deps.update phoenix - 重新拉取并编译依赖:
mix deps.get && mix deps.compile - 再尝试启动项目:
mix phx.server
如果能正常启动,那就是版本兼容的问题,不用降级Erlang了。
二、彻底卸载Erlang 20并降级到19
如果必须回到Erlang 19,系统不让直接替换的话,得先把Erlang 20彻底清理干净:
1. 完全卸载Erlang 20(以Debian/Ubuntu为例)
- 先列出所有已安装的Erlang相关包:
dpkg --list | grep erlang - 批量卸载所有Erlang包,包括配置文件:
sudo apt-get purge erlang* - 清理残留的依赖和无用文件:
sudo apt-get autoremove && sudo apt-get autoclean
2. 手动安装Erlang 19
- 找到对应系统的Erlang 19安装包(比如
.deb或.rpm格式),然后强制覆盖安装:
记得把命令里的包名替换成你下载的具体文件名。sudo dpkg -i --force-overwrite erlang_19.x.x-1_amd64.deb
3. 用版本管理工具规避冲突(强烈推荐)
其实最省心的方式是用Erlang版本管理工具,比如asdf或kerl,能同时管理多个Erlang版本,切换起来毫无压力:
- 安装
asdf:通过git克隆其仓库到本地~/.asdf目录,选择稳定分支,然后按照指引配置shell环境(比如在~/.bashrc或~/.zshrc中添加初始化脚本)。 - 添加Erlang插件:
asdf plugin add erlang - 安装Erlang 19:
asdf install erlang 19.3 - 设置版本:可以全局设置Erlang 19,也可以仅给当前Phoenix项目单独设置:
# 全局生效 asdf global erlang 19.3 # 仅当前项目生效 asdf local erlang 19.3
三、验证环境是否正常
不管是升级Phoenix还是降级Erlang,最后都要确认环境没问题:
- 检查Erlang版本:
erl -version - 进入Phoenix项目目录,执行编译和启动命令:
mix deps.compile && mix phx.server
如果服务器能正常启动,就说明问题解决啦!
内容的提问来源于stack exchange,提问作者Fillype Farias
相关产品推荐
相关产品推荐

