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

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

## 環境
vagrant + centos7

## インストール
[公式のインストールページ](http://elixir-lang.org/install.html)を参考に進めます。

#### Elixir

```shell-session
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リポジトリをインストールします。

```shell-session
sudo yum install epel-release
```

```shell-session
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=1`を`enabled=0`に変更する

で、再度

```shell-session
sudo yum install elixir --enablerepo=epel
```

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

```shell-session
elixir -v

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

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

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

(2016/07/05追記)
Elixirのインストールについてですが、その後、フレームワークのPhoenixをイストールしようとしたところ、
以下のようなエラーが発生しました。

```shell-session
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)](http://elixir-lang.org/install.html#compiling-from-source-unix-and-mingw)を参考にインストール

```shell-session
git clone https://github.com/elixir-lang/elixir.git
cd elixir
make clean test
```

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

#### Erlang

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

```shell-session
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のインストール
よく見るやつです。読み方は、えぬかーしす？らしいです。

```shell-session
sudo yum install ncurses ncurses-devel
```

インストール後に謎のメッセージが色々表示されました。
再度、ぐぐると[Erlangをソースから入れる](http://yunomu.hatenablog.jp/entry/2012/01/17/233736)に解決策が書いてありました。

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

```shell-session
sudo yum install openssl openssl-devel unixODBC unixODBC-devel fop java-1.8.0-openjdk-devel
```

その後、

```shell-session
./configure
make
sudo make install
```
して、インストール完了！！

## 確認

```shell-session
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の実行みたいです。

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

```shell-session
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を追加](http://www.kakiro-web.com/linux/epel-install.html)
[Erlangをソースから入れる](http://yunomu.hatenablog.jp/entry/2012/01/17/233736)