Installing Elixir with Observer Support on macOS Monterey
The Problem
In the process of upgrading to the latest version of Elixir (1.14.0) in macOS, I ran into an error with wxWidgets during the Erlang portion of the install process. You need wxWidgets to run the Observer, and I wanted to make sure that the Observer was available if I happened to need it.
APPLICATIONS INFORMATION (See: /Users/gabrielcook/.asdf/plugins/erlang/kerl-home/builds/asdf_25.0.4/otp_build_25.0.4.log)
* wx : No OpenGL headers found, wx will NOT be usable
* No GLU headers found, wx will NOT be usable
* wxWidgets was not compiled with --enable-webview or wxWebView developer package is not installed, wxWebView will NOT be available
The Solution
First, make sure that asdf is installed correctly. I used Homebrew to do this. There are a few different ways to get asdf running, but that’s beyond the scope of this post. If you don’t know what asdf is, you should check it out.
Before you install Elixir, you have to install Erlang.
Ensure you have all of the Erlang asdf dependancies available, according to the asdf-erlang documentation. The easiest way to do this is (in my opinion) with Hombrew. However, instead of using the prebuilt wxWidgets install from Homebrew, build it yourself.
brew install autoconf
brew install openssl@1.1
brew install --build-from-source wxwidgets
If the wxWidgets install fails, you may need to update your Xcode command line tools. This happened to me.
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
Next, install Erlang 25. The current version at the time of writing was 25.0.4.
asdf install erlang latest
It was at this step, during the Erlang build, that I got the wxWidgets error. Basically, -build-from-source
flag used win installing wxwidgets fixes that.
Now install Elixir 1.14.
asdf install elixir latest
Make sure the new Erlang and Elixir are set as the global versions.
asdf global erlang latest
asdf global elixir latest
Now you can run iex
and verify that the Observer starts.
% iex
Erlang/OTP 25 [erts-13.0.4] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit:ns]
Interactive Elixir (1.14.0) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> :observer.start()
:ok
You should see the Observer launch in a new window.
References
Elixir forum thread which had the solution this is based on.
https://elixirforum.com/t/cannot-start-observer-on-macos/36431/5
asdf version manager
asdf Erlang plugin
https://github.com/asdf-vm/asdf-erlang
asdf Elixir plugin
https://github.com/asdf-vm/asdf-elixir
Phoenix installation documentation