Logo
    Installing Elixir with Observer Support on macOS Monterey

    Installing Elixir with Observer Support on macOS Monterey

    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.

    Look it’s the Observer!
    Look it’s the Observer!

    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

    https://asdf-vm.com

    asdf Erlang plugin

    https://github.com/asdf-vm/asdf-erlang

    asdf Elixir plugin

    https://github.com/asdf-vm/asdf-elixir

    Phoenix installation documentation

    https://hexdocs.pm/phoenix/installation.html