Linux安装Elixir运行环境教程

作者:技术拾光

时间:2026-06-22

浏览:641

Linux安装Elixir需先通过ErlangSolutions官方源安装匹配的Erlang/OTP,再解压Elixir预编译包并创建软链。需确认版本:Elixir1.17以上要求OTP≥25.3。移除系统自带Erlang避免冲突。初始化hex和rebar后测试项目。注意编译时OTP版本必须不低于运行时版本。

# Linux下怎么安装Elixir运行环境

Linux安装Elixir运行环境教程

直接装`elixir`包?这事儿,基本行不通。系统包管理器里自带的`erlang`版本往往跟不上,或者干脆跟Elixir要求的版本不匹配,结果就是——`iex`启动失败、`mix`报莫名其妙的错、编译阶段直接崩溃。所以,正确姿势是:先把Erlang/OTP装到位,再配Elixir,顺序不能乱。 先确认下手里用的Elixir版本——Elixir 1.17以上的,需要Erlang/OTP不低于25.3;如果是1.16系列,OTP至少得是24开头。低于OTP 22的那些旧版本,基本跟现代Elixir工程无缘了。 **重中之重:别信包管理器默认的那个erlang。** CentOS上`yum install erlang`、Ubuntu上`apt install erlang`,很大概率给你装个OTP 20或21——然后`mix compile`直接报`** (ArgumentError) argument error`,或者干脆静默退出,查都无从查。 怎么确认当前版本?跑`erl -version`或者`erl -s erlang halt`,看输出首行。这里注意,别只看`erlang --version`,那个输出有时不准。 如果版本不够,就得先把系统的erlang卸干净:Ubuntu用`sudo apt remove erlang*`,CentOS用`sudo yum remove erlang*`。不清干净的话,新旧版本冲突会干扰PATH查找,后患无穷。 官方推荐的源是Erlang Solutions(不是EPEL也不是Debian默认源),它同步更新主线版本的预编译包,比源码编译稳得多。 ## 用官方源装Erlang 源码编译Emake?对于生产环境或者CI,能省就省——编译容易因为缺`ja va-devel`、`wxWidgets`、`odbc-devel`这些依赖中途挂掉。官方预编译包把这些坑都填平了,装完直接用。 Ubuntu/Debian上,先下载并安装源配置deb包: ``` wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb && sudo dpkg -i erlang-solutions_2.0_all.deb ``` 然后更新源并安装: ``` sudo apt update && sudo apt install esl-erlang ``` CentOS/RHEL则是加rpm源: ``` sudo rpm -Uvh https://packages.erlang-solutions.com/erlang-solutions_2.0-1.noarch.rpm sudo yum install erlang ``` 装完之后,用下面这个命令精准确认OTP版本——它会输出类似`"27"`这样的结果: ``` erl -eval 'io:format("~p~n", [erlang:system_info(otp_release)]).' -noshell -s init stop ``` ## 安装Elixir 除非你要改Elixir编译器本身的源代码,否则官方预编译包够用了——无依赖、启动快、路径干净。源码`make`一遍完全是浪费时间。 下载对应平台的最新稳定版zip(以1.17.2为例,实际使用时替换为当前latest release的版本号): ``` wget https://www.php.cn/link/392ede8a57f26b1ddfccd8a0356577aa/download/v1.17.2/Precompiled.zip ``` 解压到`/opt/elixir`,再软链到`/usr/local/bin`——这样路径干净,不会污染`~/.local/bin`或用户级PATH: ``` sudo unzip Precompiled.zip -d /opt/elixir sudo ln -sf /opt/elixir/bin/elixir /usr/local/bin/elixir sudo ln -sf /opt/elixir/bin/iex /usr/local/bin/iex ``` 验证一下:`elixir --version`应该输出类似`Elixir 1.17.2 (compiled with Erlang/OTP 27)`。注意括号里写的是“compiled with”,这是编译时用的OTP版本;运行时真正用的是哪个版本,由`erl`决定,别弄混了。 ## 验证mix和hex `mix`是Elixir的构建工具,但它默认不带Hex包管理器。首次运行`mix hex.info`会提示安装,不过在国内企业网络或者老旧OpenSSL环境下,这一步可能卡在SSL证书上。 稳妥的做法是手动初始化: ``` mix local.hex --force && mix local.rebar --force ``` 如果遇到SSL错误(最常见于企业袋里或老旧系统),临时加点环境变量可以绕过去: ``` export HEX_HTTP_CONCURRENCY=1 export MIX_ENV=prod ``` 然后重试刚才的命令。 再测试下新建项目能不能正常运行: ``` mix new hello && cd hello && mix test ``` 如果报`** (RuntimeError) could not find the "test" environment`,那就是`MIX_ENV`没生效。可以检查一下`config/config.exs`里有没有多余的`use Mix.Config`——新版Elixir已经弃用这个了,把它删掉就行。 ## 版本耦合问题:最容易翻车的地方 很多人觉得“Erlang和Elixir版本差不多能跑就行”,但实际上有个很坑的规则:**编译时OTP版本必须 ≥ 运行时OTP版本。** 听起来绕?举个例子:你用OTP 27编译出来的Elixir二进制,不能降级到OTP 25的环境下跑。即便`erl`自己能在shell里正常进,`iex`也可能在加载Kernel模块时静默退出,完全没任何错误信息。这个问题一旦碰上,排查起来相当耗时。 所以说到底,安装Elixir之前,先把Erlang/OTP版本精确确认好——这才是整个流程的关键一环。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章