elixir を Mac で使うなら asdf でバージョン管理しよう!


概要

先日参加させていただきました、Elixirのもくもく会で教わった内容となりますが、Macでの環境構築時のメモです。

現在のところ、Elixir を使うのであれば、asdf を使うか DockerHub を使うかの2択のようです。他のインストール方法だと、バージョン等の問題でおすすめ出来ないようなお話でした。

ここでは、asdf を使った構築を書いていきます。

Homebrewとgitは入っている事が前提です。

  • Mac 10.14.6 Mojave
  • Homebrew 2.1.11
  • git version 2.21.0 (Apple Git-122.2)
  • bash, version 3.2.57(1)-release

参考にしたサイト

asdf のインストール

まず、asdf に必要なライブラリを入れていきます。

$ brew install coreutils automake autoconf openssl libyaml readline libxslt libtool unixodbc

asdf を Github より clone します。

$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.6.0

そして、パスを通しましょう。

$ echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bash_profile
$ echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bash_profile

ここで忘れないように、.bash_profile の読み直しをして、通したパスを有効にします。

$ source .bash_profile

※上記のコマンドを忘れていると、つぎのコマンドが動きませんので、様子がおかしい場合は、ターミナルの再起動を行いましょう。

必要なasdfプラグインも入れておきます

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

ここまでで asdf の準備は整いました。

Erlang のインストール

つぎは、 Elixir の母体となる Erlang を入れましょう。これがないと Elixir が動きません。

$ asdf list-all erlang


でインストール可能なバージョンを確認します。

・
・
22.1.3
22.1.4
22.1.5
22.1.6
22.1.7
22.1.8
$ 

このような感じでざっと表示されます。

大体一番下の新しいバージョンを入れておけば良いようですので、

$ asdf install erlang [バージョン番号の新しいの]

上の結果の場合、

$ asdf install erlang 22.1.8

と書けば良い事になります。

ここで、JDK がインストールされていないと、

このようなダイアログが出現します。

この時に反射的にOKを押さずに、「詳しい情報」をクリックして、JDKをインストールしましょう。

ぽちっとボタンを押してインストールしましょう。

JAVAのインストールが終わると自動的に Erlang のインストールは再開されます。

結構時間が掛かる場合がありますが慌てず待ちます。

インストール出来たら確認しましょう。

$ asdf list erlang

このように打つと、インストール出来ているバージョンが全て表示されます。

上記の例でいうと、

$ asdf list erlang
  22.1.8

このようになります。

次に、asdf に 普段使う erlang のバージョンを指定します。

$ asdf global erlang [入れたバージョン]

となりますので、今回は

$ asdf global erlang 22.1.8

ですね。

Elixir のインストール

全く同じ手順となりますが、続いて Elixir も入れていきます。

$ asdf list-all elixir

このとき、私の実行環境では、

・
・
1.9.3
1.9.3-otp-20
1.9.3-otp-21
1.9.3-otp-22
1.9.4
1.9.4-otp-20
1.9.4-otp-21
1.9.4-otp-22
master
master-otp-21
master-otp-22
16:44:~$ 

このように表示されました。

$ asdf install elixir [バージョン番号の新しいの]

先程と同様、このように書けますが、今回は、

1.9.4-otp-22

を入れます。どうやら、otp-22 というのが、Erlang とのマッチングに関わるのだと思います。結果、

$ asdf install elixir 1.9.4-otp-22

このようになります。今度はインストールに時間がほぼ掛かりません。

終わったら、インストール出来た確認です。

$ asdf list elixir
  1.9.2-otp-22

このように入れたバージョンが返ってくればOKです。

最後に、通常使う Elixir のバージョン指定をします。

$ asdf global elixir [入れたバージョン]

ですので、

$ asdf global elixir 1.9.2-otp-22


このように指定すれば良いですね。

では、一応確認。

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

Elixir 1.9.4 (compiled with Erlang/OTP 22)


そして、ここまで出来ると、 iex という対話型のプログラミングツールを使う事が出来ます。

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

Interactive Elixir (1.9.4) - press Ctrl+C to exit (type h() ENTER for help)

iex(1)> "hello"         
"hello"
iex(2)> 1 + 2
3
iex(3)> ["hello", "world"]
["hello", "world"]


完了です。では楽しんでください!

気がつく事などございましたらご指摘いただけると幸いです。