Edited at

CentOS7にelixirをインストールする

More than 3 years have passed since last update.

Elixirを始めようと思い、とりあえずインストールしました。


環境

vagrant + centos7


インストール

公式のインストールページを参考に進めます。


Elixir

sudo yum install elixir

Determining fastest mirrors
* base: ftp.yz.yamagata-u.ac.jp
* extras: download.nus.edu.sg
* updates: ftp.yz.yamagata-u.ac.jp
パッケージ elixir は利用できません。
エラー: 何もしません

デフォルトで入っているyumリポジトリ内にはないぽいので、

epelリポジトリをインストールします。

sudo yum install epel-release

sudo vi /etc/yum.repos.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

enabled=1enabled=0に変更する

で、再度

sudo yum install elixir --enablerepo=epel

これでインストール完了と思い、実行したところ、

elixir -v

/usr/bin/elixir: 82 行: exec: erl: 見つかりません

こんなエラーがでました。

色々ぐぐると、Erlangのインストールも必要みたいなので、インストールします。

(2016/07/05追記)

Elixirのインストールについてですが、その後、フレームワークのPhoenixをイストールしようとしたところ、

以下のようなエラーが発生しました。

mix local.hex

** (ArgumentError) argument error
(stdlib) re.erl:170: :re.split("local.hex", {:re_pattern, 0, 1, <<69, 82, 67, 80, 57, 0, 0, 0, 0, 8, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, ...>>}, [return: :binary, parts: :infinity])
(elixir) lib/regex.ex:308: Regex.split/3
(mix) lib/mix/utils.ex:310: Mix.Utils.command_to_module_name/1
(mix) lib/mix/utils.ex:61: Mix.Utils.command_to_module/2
(mix) lib/mix/task.ex:140: Mix.Task.get!/1
(mix) lib/mix/task.ex:168: Mix.Task.run/2
(mix) lib/mix/cli.ex:59: Mix.CLI.run_task/2

ぐぐったところ、Elixirのバージョンをあげれば直るらしいという情報を得たので、

yumからインストールではなくソースからのインストールに変更しました。

Compiling from source (Unix and MinGW)を参考にインストール

git clone https://github.com/elixir-lang/elixir.git

cd elixir
make clean test

インストール後に、pathを通したら問題なくいけました。


Erlang

ソースからインストールします。

wget http://erlang.org/download/otp_src_19.0.tar.gz

tar zxvf otp_src_19.0.tar.gz
cd otp_src_19.0
./otp_build autoconf
configure: error: No curses library functions found

ncursesのインストール

よく見るやつです。読み方は、えぬかーしす?らしいです。

sudo yum install ncurses ncurses-devel

インストール後に謎のメッセージが色々表示されました。

再度、ぐぐるとErlangをソースから入れるに解決策が書いてありました。

とりあえず、インストールに足りないモジュールを追加

sudo yum install openssl openssl-devel unixODBC unixODBC-devel fop java-1.8.0-openjdk-devel

その後、

./configure

make
sudo make install

して、インストール完了!!


確認

elixir -v

Elixir 0.12.5

erl -v
Erlang/OTP 19 [erts-8.0] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]

elixirがElixirの実行で、erlがErlangの実行みたいです。

ついに、対話モードでちょっとだけ動かしました。

iex

Erlang/OTP 19 [erts-8.0] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]

Interactive Elixir (0.12.5) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> 40+2
42
iex(2)> "hello" <> "world"
"helloworld"

mysqlからのデータ取得とredisからのデータ取得などなど、一通り触ってみます。


参考

CentOS7.1 64bitのyumリポジトリにEPELを追加

Erlangをソースから入れる