最稳方式是直接安装官方预编译二进制包;源码编译仅适用于需定制运行时(如hipe、自定义crypto后端)的特殊场景,多数人configure报错或make失败实为依赖缺失或版本不匹配,并非专业度不足。

直接装官方预编译二进制包最稳,源码编译不是“更专业”,而是为满足特定运行时需求(如 HIPE、自定义 crypto 后端)才用——多数人卡在 configure 报错或 make 失败,本质是依赖缺失或系统版本不匹配,不是配置能力问题。
怎么选安装方式:rpm/deb 官方包 vs 源码编译
绝大多数场景应该用 rpm 或 deb 官方预编译包。系统自带仓库的 Erlang 版本通常太旧(比如 Ubuntu 22.04 自带 Erlang 24.x),而 RabbitMQ 3.12.x 要求 Erlang 25.3–26.x,硬装会导致 unable to start node 或 crypto application not started 错误。
- 去 https://www.php.cn/link/f93f99a01205f963a3bd8f60c3f6738f 找对应系统的最新稳定版,注意核对系统大版本:
erlang-26.2.5.2-1.el8.x86_64.rpm(CentOS 8/RHEL 8)、erlang_26.2.5.2-1~ubuntu~22.04_amd64.deb(Ubuntu 22.04) - 源码编译仅适用于需
--enable-hipe、替换crypto后端、或 aarch64 等特殊架构定制场景;它耗时长、./configure参数错一个就失败、make install后路径散乱或权限错,后续很难 clean
RPM/DEB 包安装实操要点
RPM 用户:
- CentOS 7/8:
yum install -y ./erlang-*.rpm - CentOS 9+/Fedora:
dnf install -y ./erlang-*.rpm - DEB 用户:
apt install -y ./erlang_*.deb;若提示依赖缺失,再跑一次apt --fix-broken install
验证必须做两步:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
erl -version输出应含Erlang/OTP 26(或你安装的对应版本) -
erl -eval 'io:format("~p~n", [crypto:version()])' -s init stop -noshell必须成功输出版本号,否则 RabbitMQ 启动时会因crypto应用未启动而静默失败
源码编译常见坑与绕过方法
如果你真得编译,以下几点不踩就很难过第一关:
- CentOS 8+ 报
No curses library functions found?:不是ncurses-devel没装,而是要额外装ncurses-compat-libs和ncurses-c++-libs -
./configure必须加--prefix=/usr/local/erlang,否则make install后文件留在源码目录下,which erl找不到 - 别盲目加
--enable-hipe:现代 Erlang(25+)默认启用 JIT,HIPE 在 x86_64 上反而拖慢启动,且完全不支持 aarch64 - 基础依赖必须齐:CentOS 上是
gcc make ncurses-devel openssl-devel perl xmlto,Ubuntu 上是build-essential libncurses5-dev libssl-dev perl xmlto
ERL_HOME 和 PATH 配置的致命细节
RabbitMQ 启动脚本硬编码读取 $ERL_HOME,且要求 ~/.erlang.cookie 权限为 600;环境变量配错,erl 能跑但 rabbitmq-server 直接静默退出。
- 统一用
/etc/profile.d/erlang.sh(而非直接改/etc/profile)写入:
export ERL_HOME=/usr/local/erlang export PATH=$PATH:$ERL_HOME/bin
source /etc/profile.d/erlang.sh 后,检查 which erl 输出是否为 /usr/local/erlang/bin/erl
~/.erlang.cookie 权限是 600,且内容在集群节点间一致;RabbitMQ 服务用户(通常是 rabbitmq)也必须能读该文件最容易被忽略的是:RabbitMQ 不认 PATH 里混着的多个 erl,只要 $ERL_HOME 指向错误路径,哪怕 erl -version 显示正确,服务照样起不来。










