In the Erlang VM, there is an awesome resource called “observer”. However, if you installed Elixir in Linux using the default approach, as I did, you probably got the erlang-nox package installed as a dependency. The “nox” version is the “headless version”. This lacks the wxWidgets libraries needed for creating the GUI.

When attempting to start the observer this error results.

iex(1)> :observer.start()

07:10:30.568 [error] ERROR: Could not find 'wxe_driver.so' in: /usr/lib/erlang/lib/wx-1.5/priv

Installing the full Erlang package, replaces the “nox” version. Running Arch Linux, the following brings in all the dependencies needed to fix it.

$ pacman -S erlang
resolving dependencies...
looking for conflicting packages...
:: erlang and erlang-nox are in conflict. Remove erlang-nox? [y/N] y

Packages (2) erlang-nox-18.1-1 [removal]  erlang-18.1-1

Total Download Size:    39.00 MiB
Total Installed Size:  107.48 MiB
Net Upgrade Size:        2.15 MiB

:: Proceed with installation? [Y/n]
:: Retrieving packages ...
 erlang-18.1-1-x86_64      39.0 MiB  10.1M/s 00:04 [######################] 100%
(1/1) checking keys in keyring                     [######################] 100%
(1/1) checking package integrity                   [######################] 100%
(1/1) loading package files                        [######################] 100%
(1/1) checking for file conflicts                  [######################] 100%
(2/2) checking available disk space                [######################] 100%
(1/1) removing erlang-nox                          [######################] 100%
(1/1) installing erlang                            [######################] 100%
Optional dependencies for erlang
    erlang-unixodbc: database support
    java-environment: for Java support
    lksctp-tools: for SCTP support

Once the full and proper Erlang is installed, the observer works!

$ iex -S mix
Erlang/OTP 18 [erts-7.1] [source] [64-bit] [smp:3:3] [async-threads:10] [hipe] [kernel-poll:false]

Interactive Elixir (1.1.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> :observer.start()

erlang observer started