在CentOS上安装Elixir
环境
操作系统:CentOS 6.7
Erlang R14B04 ⇒ Erlang/OTP 21 [开发版]
Eshell V5.8.5 ⇒ Eshell V9.0.1
Elixir:1.6.0-dev
经过
我在尝试在CentOS上构建Elixir环境时,按照安装方法执行了yum install elixir命令,但却出现了“未找到elixir等”等错误。
# yum install elixir
No package elixir available.
Error: Nothing to do
因此,我从Erlang安装中使用yum install erlang进行了安装。
# yum install erlang
====================================
Install 72 Package(s)
Upgrade 1 Package(s)
Total download size: 57 M
Is this ok [y/N]: y
Downloading Packages:
Installed:
erlang.x86_64 0:R14B-04.3.el6
Dependency Installed:
SDL.x86_64 0:1.2.14-7.el6_7.1
Dependency Updated:
libdrm.x86_64 0:2.4.65-2.el6
Complete!
接下来,我试图从Github上克隆和安装Elixir,但是这次问题出现在Erlang版本太旧而无法安装Elixir。
# git clone https://github.com/elixir-lang/elixir.git
# cd /usr/local/lib/elixir/
# make clean test
cd lib/elixir && "/usr/bin/elixir/rebar" clean
=ERROR REPORT==== 6-Jul-2017::12:17:46 ===
Loading of /usr/bin/elixir/rebar/rebar/ebin/rebar.beam failed: badfile
escript: exception error: undefined function rebar:main/1
in function escript:run/2
in call from escript:start/1
in call from init:start_it/1
in call from init:start_em/1
=ERROR REPORT==== 6-Jul-2017::12:17:46 ===
beam/beam_load.c(1365): Error loading module rebar:
use of opcode 153; this emulator supports only up to 152
make: *** [clean] Error 127
看起来 Erlang 的版本有点旧。
# /usr/bin/erl -v
Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]
Eshell V5.8.5 (abort with ^G)
我遇到了困难,于是我决定尝试从Github的源代码中编译安装最新版本的Erlang和Elixir,具体步骤如下所述。
我没想到最近竟然还需要从源代码编译。
所以,接下来就是正题了。
安装Erlang
git clone https://github.com/erlang/otp.git
cd otp
./otp_build autoconf
./configure
make
make install
默认情况下,erl的符号链接将被创建在/usr/local/bin/目录下,而其实体似乎被安装在/usr/local/lib/erlang目录下。已经安装了最新版本的Erlang。
# /usr/local/bin/erl -v
Erlang/OTP 21 [DEVELOPMENT] [erts-9.0.1] [source-e8a2cae] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.0.1 (abort with ^G)
安装Elixir
转到已部署Elixir的/usr/local/lib/elixir目录,并尝试重新安装刚刚从Github克隆的Elixir。
# cd /usr/local/lib/elixir/
# make clean test
虽然可以通过将 ~/.bash_profile 添加路径 /usr/local/lib/elixir/bin 到Elixir,但是为了与刚刚安装的Erlang相匹配,我创建了一个符号链接到 /usr/local/bin。
# cd /usr/local/bin
# ln -s ../lib/elixir/bin/elixir elixir
# ln -s ../lib/elixir/bin/elixirc elixirc
# ln -s ../lib/elixir/bin/iex iex
# ln -s ../lib/elixir/bin/mix mix
暂时先安装了最新版本的Elixir。
$ iex
Erlang/OTP 21 [DEVELOPMENT] [erts-9.0.1] [source-e8a2cae] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [hipe] [kernel-poll:false]
warning: the VM is running with native name encoding of latin1 which may cause Elixir to malfunction as it expects utf8. Please ensure your locale is set to UTF-8 (which can be verified by running "locale" in your shell)
Interactive Elixir (1.6.0-dev) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
关于服务器语言设置的警告已经出现,但就安装而言,暂时还顺利进行着。