Ubuntu14.04へのElixirインストールの覚書

Ubuntu14.04へのElixirインストールについて、主にErlangの部分で躓いたので、忘れないうちにまとめとく。

まとめると言っても、基本bash_historyからのログ引っこ抜きで書いてるので、あまりあてにならないかもしれない。

基本的に以下のページを参考にしつつ、ubuntu用のパッケージを順次追加していくのが主な流れ。

- [Mac OSXにanyenv/exenvでElixirをインストールする](http://qiita.com/nownabe/items/67a27ddd23652676ffee)
- [Elixir installation guide](https://gist.github.com/rubencaro/6a28138a40e629b06470)
- [How to Install Erlang on Ubuntu 10.10](https://sites.google.com/site/comptekkia/erlang/how-to-install-erlang-on-ubuntu-10-10)

## Erlangのインストール

取り敢えず、Erlangのインストールが必要なのでこっちから片付ける。寧ろ、この部分がこの記事のメイン。

erlenv使ってやる。anyenvは今回使わない。（深い意味は無い）

```
git clone https://github.com/talentdeficit/erlenv.git $HOME/.erlenv
echo 'export PATH="$HOME/.erlenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(erlenv init -)"' >> ~/.bash_profile
```

erlenvはbuildツール無しでやる。（ただ単に使い方を知らない）

ソースのダウンロードとインストールは適当なtmpdirでやる。
versionの最新は18.1。

が、その前に、必要なパッケージをインストールしていく。

```
sudo apt-get install build-essential git wget libssl-dev libreadline-dev libncurses5-dev zlib1g-dev m4 curl
```

```
sudo apt-get install wx-common libwxgtk3.0-dev
sudo apt-get install libwxbase3.0
```
上記については後述する通りwxのライブラリを除外するオプションで不要になるかもしれないけど、もしエラーになるなら追加しとく。

デフォルトではJava本体が必要なのでもし入ってないなら、ここでインストール。
（--without-javacのオプション追加で不要になるかもしれない）

```
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default
```

まだまだある。

```
sudo apt-get install unixodbc-dev
sudo apt-get install g++
sudo apt-get install fop
sudo apt-get install xsltproc xmllint libxml2-utils
```

(xmllintいらんかも。。。)

ここから先インストールするパッケージに関しては、以下のページを見る限りだと、

```
./configure --without-wx
```

のオプションで丸ごと省略できるかもしれない。見る限りGUIのライブラリを延々インストールするのでwebで使うだけなら不要だと思う。

オプションについては
http://qiita.com/cooldaemon/items/685b1ef71978614ba7a2
か
http://qiita.com/voluntas/items/a39cf3ec1a385e612f2a
を見て適宜設定。

[Erlang Build Fails: Can not link the wx driver, wx will NOT be useable](http://stackoverflow.com/questions/24776745/erlang-build-fails-can-not-link-the-wx-driver-wx-will-not-be-useable)

ぱっと見必要なさそうなGUIのライブラリだけど、ビルド時に必要っぽいので突っ込んどく。
```
sudo apt-get install libqt5opengl5 libqt5opengl5-dev libgtk3.0-cil libgtk3.0-cil-dev
```
（環境によってはエラーになるかもしれない（Nitrous.ioだとエラーが途中で出たが継続する分には問題無さそう））
全部入ったらようやくソースのビルド。

```
wget http://www.erlang.org/download/otp_src_18.1.tar.gz
tar xvzf otp_src_18.1.tar.gz
cd opt_src_18.1
./configure --prefix=$HOME/.erlenv/releases/18.1
make -j 4
make install
```

結構かかるのでお茶でも飲みながら待つといいよ。
もしビルドエラーがでないなら、以下のコマンド叩いて動作確認。

```
erlenv global 18.1
erlenv rehash
erl
```

## Elixirのインストール

こちらもお約束通り、env系のツールでインストール。こちらは特に躓くところはない。

```
git clone https://github.com/mururu/exenv.git $HOME/.exenv
 
exec $SHELL -l
git clone https://github.com/mururu/elixir-build.git ~/.exenv/plugins/elixir-build
echo 'export PATH="$HOME/.exenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(exenv init -)"' >> ~/.bash_profile
exec $SHELL -l
exenv install -list
```


取り敢えず現時点で最新の1.1.1をインストール。

```
exenv install 1.1.1
exenv global 1.1.1

```

ここまでうまく通ったら、以下のコマンドで確認。

```
$ elixir -v
$ iex
```

## 結論として

なんかもうErlangに関しては素直に
https://packages.erlang-solutions.com/erlang/ 
から拾ってくるのが最良な気がしてきた。
そしてelixirに関してはenv系のツールでバージョン切換するのがベストなんじゃないかと。