麒麟OS上Elixir环境搭建推荐asdf管理器(多版本共存)、源码编译(适配aarch64/loongarch64)、Docker容器化(隔离依赖)及ElixirLS配置(支持VS Code/Neovim)。

如果您在麒麟操作系统(Kylin OS)上尝试搭建Elixir开发环境,但遇到依赖不兼容、Erlang版本缺失或LSP服务无法启动等问题,则很可能是由于系统源未适配、架构识别错误或环境变量未正确注入所致。以下是针对Kylin V10(x86_64/aarch64/loongarch64)的多种可行安装路径:
一、使用asdf版本管理器安装(推荐多版本共存场景)
asdf是跨语言的版本管理工具,可独立控制Erlang与Elixir版本,避免与系统包管理器冲突,特别适用于需同时维护多个Elixir项目的开发者。
1、安装asdf核心工具:执行命令 git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0。
2、启用shell插件:在 ~/.bashrc 或 ~/.zshrc 中追加 source $HOME/.asdf/asdf.sh 与 source $HOME/.asdf/completions/asdf.bash,然后执行 source ~/.bashrc。
3、添加Erlang和Elixir插件:依次运行 asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git 与 asdf plugin add elixir https://github.com/asdf-vm/asdf-elixir.git。
4、安装指定版本:执行 asdf install erlang ref:OTP-26.3.2(支持Kylin内核的稳定版),再执行 asdf install elixir 1.17.2-otp-26。
5、设为全局默认:运行 asdf global erlang ref:OTP-26.3.2 与 asdf global elixir 1.17.2-otp-26,验证 elixir --version 和 erl -version。
二、通过源码编译安装(适用于aarch64/loongarch64等非x86架构)
麒麟OS部分国产CPU平台(如飞腾FT-2000+/鲲鹏920/龙芯3A6000)缺乏预编译的Erlang二进制包,需从源码构建以确保指令集兼容与性能优化。
1、安装编译依赖:运行 sudo apt install -y build-essential autoconf m4 libncurses5-dev libssh-dev libssl-dev libxml2-dev libwxgtk3.0-gtk3-dev libgl1-mesa-dev libglu1-mesa-dev。
2、下载Erlang源码:访问 https://github.com/erlang/otp/releases/tag/OTP-26.3.2,下载 otp_src_26.3.2.tar.gz 并解压至 /tmp/otp_src_26.3.2。
3、配置并编译:进入解压目录,执行 ./configure --prefix=/opt/erlang-26.3.2 --enable-smp-support --enable-threads --enable-kernel-poll --without-javac;随后运行 make -j$(nproc) 与 sudo make install。
4、安装Elixir源码:克隆 https://github.com/elixir-lang/elixir.git,检出 tag v1.17.2,执行 make && sudo make install,默认安装至 /usr/local/bin。
5、配置环境变量:创建 /etc/profile.d/elixir.sh,写入 export PATH="/opt/erlang-26.3.2/bin:/usr/local/bin:$PATH",执行 source /etc/profile.d/elixir.sh。
三、基于Docker容器化部署(隔离性强,规避系统级依赖冲突)
在麒麟OS中启用Docker后,可通过官方Elixir镜像快速获得纯净、可复现的开发环境,尤其适合CI/CD集成与临时调试场景,无需修改宿主机系统状态。
1、确认Docker已就绪:执行 sudo systemctl is-active docker,若返回 inactive 则先运行 sudo systemctl start docker。
2、拉取适配镜像:根据CPU架构选择——x86_64用 docker pull hexpm/elixir:1.17.2-erlang-26.3.2;aarch64用 docker pull --platform linux/arm64 hexpm/elixir:1.17.2-erlang-26.3.2。
3、运行交互式容器:执行 docker run -it --rm -v $(pwd):/workspace -w /workspace hexpm/elixir:1.17.2-erlang-26.3.2 bash。
4、验证运行时:容器内直接输入 elixir -e "IO.puts(:hello)",输出 hello 即表示环境可用。
5、挂载配置文件:将本地 .iex.exs、.tool-versions 等文件通过 -v 参数映射入容器,实现开发习惯延续。
四、配置ElixirLS语言服务器(VS Code / Neovim 支持)
ElixirLS提供跳转定义、实时诊断、重构建议等IDE级能力,其运行依赖Erlang/OTP与Mix工程结构,必须确保宿主机或容器内已正确安装对应版本的Erlang与Elixir。
1、克隆ElixirLS仓库:执行 git clone https://gitcode.com/gh_mirrors/eli/elixir-ls.git ~/elixir-ls。
2、进入目录并构建:运行 cd ~/elixir-ls && MIX_ENV=prod mix do deps.get, compile,生成 _build/prod/rel/language_server/bin/language_server。
3、设置VS Code扩展:在扩展市场安装 ElixirLS: Elixir Support,打开设置,将 Elixir SLS: Path 指向上述生成的二进制路径。
4、Neovim适配:若使用 kickstart.nvim,在 lua/custom/plugins/init.lua 中添加 use {'elixir-lsp/elixir_ls', run = 'mix compile'},并确保 :checkhealth lspconfig 显示正常。
5、权限校验:对 language_server 二进制文件执行 chmod +x _build/prod/rel/language_server/bin/language_server,防止因权限不足导致LSP启动失败。

















