はじめに
某会社さんでElixirを始めて触った時に、WSL上のElixirでライブラリをインストールするときにエラーが発生したのでその解決策をメモ
もう一つ、WSL上でElixirを動かすときにライブラリがインストールできなかったのでそちらもどうぞ→WSL上でElixirを使うときにライブラリがインストールできなかった件
環境
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
問題
WSLのUbuntu環境にて、モニタリングツールを実行時にエラーが起きた
$ iex
Erlang/OTP 22 [erts-10.4.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1]
Interactive Elixir (1.8.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> :observer.start
** (UndefinedFunctionError) function :observer.start/0 is undefined (module :observer is not available)
:observer.start()
$ sudo apt-get install -y erlang-observer
実行後、もう一度試したら次のようなエラーが起きた
iex(1)> :observer.start
00:28:52: Error: Unable to initialize GTK+, is DISPLAY set properly?
{:error,
{{:einval, 'Could not initiate graphics'},
[
{:wxe_server, :start, 1, [file: 'wxe_server.erl', line: 65]},
{:wx, :new, 1, [file: 'wx.erl', line: 115]},
{:observer_wx, :init, 1, [file: 'observer_wx.erl', line: 107]},
{:wx_object, :init_it, 6, [file: 'wx_object.erl', line: 372]},
{:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 249]}
]}}
解決
Windows上でVcXsrv Windows X Serverをインストール
https://sourceforge.net/projects/vcxsrv/
VcXsrvを起動
https://www.atmarkit.co.jp/ait/articles/1812/06/news040.html
WSL上で以下のコマンドを実行
$ echo ‘export DISPLAY=:0.0’ >> .profile
$ source .profile
改めてiexからコマンドを実行
$ iex
Erlang/OTP 22 [erts-10.4.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1]
Interactive Elixir (1.8.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> :observer.start
:ok
iex(2)>
うまく起動できました
Macと比べると面倒ですね・・・はやくMacBookほしいです
参考サイト
https://www.walknsqualk.com/post/elixir-on-wsl/
https://www.atmarkit.co.jp/ait/articles/1812/06/news040.html
https://torisky.com/wsl%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC%EF%BC%9Aerror-cant-open-display%E3%81%AE%E5%AF%BE%E5%87%A6/