WSL2でElixir本体のビルドとiexバージョン変更


この記事は、「fukuoka.ex Elixir/Phoenix Advent Calendar 2020」の15日目です

昨日は、エリジョ(Elixir女子部)のオーガナイザー、@gkumi5638 さんの「Elixirでバリデーションを実装してみた」でした


Elixir Digitalization Implementors/fukuoka.ex/kokura.exのpiacereです
ご覧いただいて、ありがとうございます

以前、Windowsでcygwinを使って、Elixir本体をビルド/カスタマイズするコラム を書きましたが、WSL2でも同様のビルド/カスタマイズが可能なのか、検証してみたいと思います

余力あれば、WSL2でビルドしたElixir本体は、素のWindowsでも動くのか確認したいと思います

内容が、面白かったり、役に立ったら、「LGTM」よろしくお願いします

Advent Calendar、fukuoka.ex1位、Elixir2位達成ヽ(=´▽`=)ノ

fukuoka.ex Advent Calendar、Webテクノロジーカテゴリで堂々1位 … 各コラムぜひお読みください
https://qiita.com/advent-calendar/2020/fukuokaex

そして、プログラミング言語カテゴリは、1位がRust、2位がElixir、3位がGoとモダン言語揃い踏みでのトップ3、熱いネー
https://qiita.com/advent-calendar/2020/elixir

WSL2とインストール

下記「方法b)WSL2上でUbuntu 18.04 LTSを使う」の通り、WSL2とをインストールしてください

なお、「sshの設定」と「Nervesをインストール」以降は、ここでは不要です

WindowsからElixir IoT端末を作ってみた:「Raspberry Pi OS」を入れた後、Elixir IoTフレームワーク「Nerves」へ
https://qiita.com/piacerex/items/98e1bde676263f5f9f81#%E6%96%B9%E6%B3%95%EF%BD%82wsl2%E4%B8%8A%E3%81%A7ubuntu-1804-lts%E3%82%92%E4%BD%BF%E3%81%86

Elixir本体ソースコードのgit cloneとビルド

下記コラムの「Elixir本体ソースコードのgit cloneとビルド」の通りに実行します

Elixir本体ビルド②:Elixir本体のバージョンをいじってmake、iexバージョン変更
https://qiita.com/piacerex/items/5c38bce0e3abdc1428bf#elixir%E6%9C%AC%E4%BD%93%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AEgit-clone%E3%81%A8%E3%83%93%E3%83%AB%E3%83%89

iexのバージョンを変更してみる

こちらも、下記コラムの「iexのバージョンを変更してみる」の通りに実行します

Elixir本体ビルド②:Elixir本体のバージョンをいじってmake、iexバージョン変更
https://qiita.com/piacerex/items/5c38bce0e3abdc1428bf#iex%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B

ビルド完了したiexで動かしたものは、こんな感じで、上手くいきました

WSL2でビルドしたElixir本体は素のWindowsで動く?

ここで疑問なのは、WSL2でビルドしたElixir本体は、素のWindowsで動くのか? … という点です

試してみましょう

下記コマンドで、WindowsのCドライブ直下に、ビルドしたElixirをコピーします

$ cd ../..
$ cp -a elixir/ /mnt/c/

実行してみると、なんか何事も無く、動きました

最後に

WSL2+Ubuntuを使ってElixirビルドを行っても全く問題無く、さらに素のWindowsでも使えました

Windowsを利用されてるアルケミストは、Cygwinよりも安定性高いWSL2+Ubuntuがオススメです

p.s.このコラムが、面白かったり、役に立ったら…

にて、どうぞ応援よろしくお願いします


明日の記事は、@masatam81 さんの「動的計画法を使う問題をElixirで関数型っぽく解いてみる」です