小林ノエルのエンジニア的忘備録

フリーランス兼会社員エンジニアが技術とかリモートワークのこととかをツラツラ書いていきます

asdfを使ってelixirをインストールする

asdfを使ってelixirをインストールしたのでメモ。

目次

環境

homebrewでインストールしたelixirを削除する

もしすでにhomebrewでelixirをインストールしていたら下記のように削除しておく。

$ brew remove elixir
$ brew remove erlang

ちなみにふと気になって調べたら、homebrewのuninstallとremoveは同じことをしているらしい(エイリアスらしい)。

How to Uninstall Packages with Homebrew

asdfのインストール

基本的には公式ドキュメントに記載の通りでOK。

$ brew install asdf
# 自分の環境がzshなので、shellへの追加方法もzsh版
$ echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.zshrc
$ echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.zshrc
$ brew install coreutils automake autoconf openssl libyaml readline libxslt libtool unixodbc unzip curl

erlang plugin, elixir pluginの追加

asdfでは各言語をインストールするためにはpluginを追加する必要があるので、elixirをインストールするためにはelixir pluginを追加する必要がある。こちらもREADMEにあるようにすればOKだが、URLの部分は省略可能みたい。

elixirはerlangVMの上で動くので、erlangのpluginも合わせて追加する。

下記のコマンドでpluginの追加と確認ができる。

$ asdf plugin-add erlang 
$ asdf plugin-add elixir
$ asdf plugin-list --urls
elixir          https://github.com/asdf-vm/asdf-elixir.git
erlang          https://github.com/asdf-vm/asdf-erlang.git

elixirのインストール

インストール可能なバージョンを表示してみる。すると、下記のような結果を得る。

$  asdf list-all elixir
...
1.8.2
1.8.2-otp-20
1.8.2-otp-21
1.8.2-otp-22
1.9.0-rc.0
1.9.0-rc.0-otp-20
1.9.0-rc.0-otp-21
1.9.0-rc.0-otp-22
1.9.0
1.9.0-otp-20
1.9.0-otp-21
1.9.0-otp-22
1.9.1
1.9.1-otp-20
1.9.1-otp-21
1.9.1-otp-22
master
master-otp-20
master-otp-21
master-otp-22

pluginの説明を読むと、1.8.2みたいにお尻に何もついてないのは、サポートしている1番古いOTPに対してビルドしてあるらしい。特定のOTPに対してビルドしてあるものは-otp-${OTP_MAJOR_VERSION}となっているものを使えとのこと。

基本的にはOTPのバージョンも1番新しいものを指定しておけば良いと思う。

$ asdf install erlang 22.0.7
# erlangのインストールは結構時間かかる。自分のマシンで14分くらいかかった。
$ asdf install elixir 1.9.1-otp-22
$ asdf global erlang 22.0.7
$ asdf global elixir 1.9.1-otp-22

実行

elixirにはインタラクティブシェルがあるので、まずはそれを起動してelixirが正しくインストールされたかを確認する。

$ iex
Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Interactive Elixir (1.9.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> IO.puts "hello, world"
hello, world
:ok
iex(2)> 2 + 3
5

上記までいけばひとまずインストールは成功!