CentOS 6.5系统下如何成功安装Erlang 19环境?

在许多企业的生产环境中,由于稳定性和兼容性要求,依然保留着运行多年的经典系统,CentOS 6.5 便是其中之一,当需要在这类陈旧但可靠的系统上部署特定版本的应用,例如安装 Erlang 19 来支撑 RabbitMQ 或某些自研的分布式服务时,会遇到一系列挑战,本文将详细阐述在 CentOS 6.5 系统上从源代码编译安装 Erlang 19 的完整流程,涵盖准备工作、依赖解决、编译步骤以及常见问题的排查,旨在为系统管理员和开发人员提供一份清晰、可执行的指南。

面临的挑战:为何选择源码编译?

直接通过 yum 在 CentOS 6.5 上安装 Erlang 通常会遇到两个核心问题,官方源及 EPEL 源提供的 Erlang 版本非常陈旧,远低于 Erlang 19,无法满足新软件的版本依赖,Erlang 19 对编译工具链和系统库(如 GCC、ncurses、OpenSSL 等)有更高的要求,而 CentOS 6.5 自带的默认版本往往过低,直接尝试安装新版本的 RPM 包会因依赖冲突而失败,从源代码编译安装是解决版本兼容性和依赖问题的最可靠、最灵活的途径,它允许我们精确控制编译选项,并针对当前系统环境进行优化。

第一步:系统准备与依赖安装

在开始编译之前,必须确保系统具备基本的编译环境和所有必需的开发库,这一步是成功编译的关键,任何缺失的依赖都可能导致 ./configuremake 过程中断。

更新系统到最新状态并安装“开发工具”包组,这将包含 GCC、Make 等核心编译工具。

sudo yum update -y
sudo yum groupinstall -y "Development Tools"

安装 Erlang 19 编译所依赖的具体库文件,这些库涵盖了终端控制、加密、图形界面(可选)、ODBC 连接等多个方面,以下是一个较为全面的依赖列表,建议一次性安装完毕以避免后续中断。

sudo yum install -y \
    ncurses-devel \
    openssl-devel \
    unixODBC-devel \
    wxBase.x86_64 \
    wxGTK.x86_64 \
    wxGTK-gl.x86_64 \
    wxGTK-devel.x86_64 \
    fop \
    java-1.7.0-openjdk-devel \
    libxslt-devel \
    perl-ExtUtils-MakeMaker

核心依赖说明表

依赖包名称 功能说明 是否必须
ncurses-devel 提供终端字符界面处理能力,Erlang Shell 依赖它。
openssl-devel 提供 SSL/TLS 加密通信支持,如 ssl 应用。
unixODBC-devel 提供数据库连接支持,用于 odbc 应用。 按需
wxGTK-devel 提供图形用户界面支持,用于 observer 等可视化工具。 按需
java-1.7.0-openjdk-devel 提供 JInterface 支持,用于与 Java 程序交互。 按需
libxslt-devel 用于处理文档转换,编译文档时需要。

第二步:下载并解压 Erlang 19 源码

依赖安装完成后,从 Erlang 官方网站下载指定版本的源代码包,这里以 Erlang/OTP 19.3 为例。

cd /usr/local/src
wget http://erlang.org/download/otp_src_19.3.tar.gz

下载完成后,使用 tar 命令解压源码包,并进入解压后的目录。

tar -xzf otp_src_19.3.tar.gz
cd otp_src_19.3

第三步:配置编译选项

运行 configure 脚本是编译前的核心步骤,它会检测系统环境,并生成相应的 Makefile,对于 CentOS 6.5,我们可以添加一些选项来优化编译过程或禁用不需要的功能,以减少潜在的编译错误。

./configure \
    --prefix=/usr/local/erlang \
    --enable-smp-support \
    --enable-threads \
    --enable-sctp \
    --enable-kernel-poll \
    --enable-hipe \
    --without-javac

配置选项解释:

  • --prefix=/usr/local/erlang: 指定 Erlang 的安装目录,便于管理和卸载。
  • --enable-smp-support: 启用对称多处理器支持,充分利用多核 CPU。
  • --enable-threads: 启用线程支持。
  • --without-javac: 如果不打算使用 JInterface 或系统中 Java 环境配置复杂,可以使用此选项跳过 Java 相关组件的编译,能规避一些问题。

configure 过程顺利结束,将会看到一系列的配置摘要,如果报错,请仔细阅读错误信息,通常是缺少某个 -devel 包,根据提示使用 yum 安装即可。

第四步:编译与安装

配置成功后,便可以开始编译,这个过程会消耗较多的 CPU 资源和时间,具体时长取决于服务器的性能。

make

编译过程没有任何错误提示后,执行安装命令,将编译好的文件复制到 --prefix 指定的目录中。

sudo make install

第五步:配置环境变量与验证

为了能在系统任何地方直接使用 erlerlc 等命令,需要将 Erlang 的 bin 目录添加到系统的 PATH 环境变量中,编辑 /etc/profile 文件,在末尾添加以下内容:

export ERLANG_HOME=/usr/local/erlang
export PATH=$PATH:$ERLANG_HOME/bin

保存文件后,执行 source /etc/profile 使配置立即生效,或者重新登录终端。

验证安装是否成功,在终端中输入 erl,如果看到带有 Erlang/OTP 19.3 版本信息的 Shell 启动画面,即表示安装成功。

erl
Erlang/OTP 19 [erts-8.3] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V8.3  (abort with ^G)
1>

输入 halt(). 即可退出 Erlang Shell。


相关问答 (FAQs)

问题1:为什么我不能直接使用 yum install erlang 来安装?这样做有什么风险?

答: 直接使用 yum 在 CentOS 6.5 上安装 Erlang 存在两个主要问题,第一,版本过低,CentOS 6 的官方源和 EPEL 源提供的 Erlang 版本通常是 R14B 或 R16B 等非常旧的版本,这些版本缺少许多现代特性和安全修复,无法满足如新版本 RabbitMQ 等应用的最低要求,第二,强行安装第三方为 CentOS 6 构建的新版本 RPM 包,极易引发“依赖地狱”,即该 RPM 包需要的系统库(如 glibc, openssl)版本高于系统自带,导致安装失败或系统不稳定,源码编译是在旧系统上获取新版本软件最稳妥的方法。

问题2:如果将来我想卸载这个从源码安装的 Erlang 19,应该如何操作?

答: 从源码安装的软件无法通过 yum remove 卸载,卸载方法取决于在安装目录(/usr/local/erlang)下是否还保留着编译时的文件,最规范的卸载方式是,如果源码目录 otp_src_19.3 未被删除,Makefile 文件仍然存在,可以重新进入该目录,执行 sudo make uninstall 命令,这个命令会读取 Makefile 中的安装记录,并删除所有已安装的文件,如果源码目录已被删除,那么只能手动删除安装目录了,即执行 sudo rm -rf /usr/local/erlang,同时别忘了从 /etc/profile 中移除之前添加的环境变量配置。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-04 15:38
下一篇 2025-10-04 15:40

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信