:observer.start is not working on Ubuntu

Hello I am new to that forum.
I just had the same problem and it cost me about half an hour to solve it.
Maybe after setup up the esl-erlang repository i found a packet in synaptic package manager called erlang-wx. This installed the correct library but not in
/usr/local/lib/erlang/lib/wx-1.8.1/priv as requested by iex error message.
Therefore I created a softlink in that directory to point to the installed lib
from erlang-ex at /usr/lib/erlang/lib/wx-1.8.4/priv// and now observer is working.
Thank you for posting the question.

1 Like

Hey! Just a heads up for everybody. On ubuntu 16.04 upgrade to esl-erlang 21.1.3 broke observer. You have to downgrade to 21.1 to fix it

2 Likes

True, thanks @khaskelberg et al
On ubuntu,
After esl-erlang removal go for
apt-get install esl-erlang=1:21.1

1 Like

The issue was fixed. Latest esl-erlang update (1:21.1.3-2) contains fixes.

This helped me to fix my docker stack, and I use your solution in my Dockerfile with this script:

#!/bin/bash

set -eu

################################################################################
# VARS
################################################################################

  erlang_lib_dir=/usr/local/lib/erlang/lib

  erlang_wx=$( find ${erlang_lib_dir}  -name 'wx-*' )
  erlang_wx_version=${erlang_wx##*/}

  erlang_wx_dir=/usr/lib/erlang/lib/"${erlang_wx_version}"


################################################################################
# EXECUTION
################################################################################

  printf "\n\nERLANG WX VERSION: $erlang_wx_version\n"

  if [ -d "${erlang_wx_dir}" ]; then
    # https://elixirforum.com/t/observer-start-is-not-working-on-ubuntu/6018/21?u=exadra37
    rm -rvf "${erlang_lib_dir}/${erlang_wx_version}"
    ln -s "${erlang_wx_dir}" "${erlang_lib_dir}"
  fi

Thanks

Did anyone faced this issue on CentOS 7.3? Installing wxWidgets didnā€™t help.

Still working fine here on redhat (7?) with wxWidgets 2.9 installed.

In Debian and Alpine I noticed that when you install the wxWidgets with the operating system tooling you get it installed in a different path and missing the folder priv if I am not in mistake, thus you may have the same issue in Centos.

You need to compare the folder where wx-version is installed, between a working Centos version and the Cewntos 7.3, and if you find any of the issues I mentioned you will need to find a way of fixing them.

My solution in the end was to compile Erlang from the git repo, and have all the necessary dependencies already installed.

I have wrote a bash script to compile Erlang from a git branchā€¦ its still a work in progress, thus it will be only merged when I have finished my Elixir Docker Stack, but you can see it at this commit or just here:

#!/bin/bash

set -eu

Main()
{
  ##############################################################################
  # INPUT
  ##############################################################################

    local git_branch="${1? Missing git branch or tag from where we want to install Erlang !!!}"


  ##############################################################################
  # VARS
  ##############################################################################

    local branch="${git_branch#OTP-*}"

    local first_character="${git_branch:0:1}"

    printf "\nGIT BRANCH FIRST CHARACTER: ${first_character}\n"

    case ${first_character} in
      [0-9] )
        local git_branch="OTP-${git_branch}"
      ;;
    esac


  ##############################################################################
  # CONSTANTS
  ##############################################################################

    # TODO:
    #   * some of the dependencies are in the build-essential package, thus we
    #     need to check the ones that already exist, so that we will only remove
    #     the ones we installed.

    # $ apt install build-essential
    # Reading package lists... Done
    # Building dependency tree
    # Reading state information... Done
    # The following additional packages will be installed:
    #   binutils cpp cpp-6 dpkg-dev fakeroot g++ g++-6 gcc gcc-6 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan3
    #   libatomic1 libcc1-0 libcilkrts5 libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-6-dev libgomp1 libisl15 libitm1
    #   liblocale-gettext-perl liblsan0 libmpc3 libmpfr4 libmpx2 libquadmath0 libstdc++-6-dev libtsan0 libubsan0 make
    # Suggested packages:
    #   binutils-doc cpp-doc gcc-6-locales debian-keyring g++-multilib g++-6-multilib gcc-6-doc libstdc++6-6-dbg gcc-multilib manpages-dev
    #   autoconf automake libtool flex bison gdb gcc-doc gcc-6-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan3-dbg
    #   liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx2-dbg libquadmath0-dbg libstdc++-6-doc make-doc
    # The following NEW packages will be installed:
    #   binutils build-essential cpp cpp-6 dpkg-dev fakeroot g++ g++-6 gcc gcc-6 libalgorithm-diff-perl libalgorithm-diff-xs-perl
    #   libalgorithm-merge-perl libasan3 libatomic1 libcc1-0 libcilkrts5 libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-6-dev libgomp1
    #   libisl15 libitm1 liblocale-gettext-perl liblsan0 libmpc3 libmpfr4 libmpx2 libquadmath0 libstdc++-6-dev libtsan0 libubsan0 make
    # 0 upgraded, 34 newly installed, 0 to remove and 0 not upgraded.
    # Need to get 33.8 MB of archives.
    # After this operation, 139 MB of additional disk space will be used.

    local INSTALL_BUILD_DEPENDENCIES="
      autoconf
      dpkg-dev
      gcc
      g++
      make
      libncurses5-dev
      unixodbc-dev
      libssl-dev
      libsctp-dev
      libwxgtk3.0-dev
      default-jdk
      fop
      libxml2-utils
      xsltproc
    "

    local REMOVE_BUILD_DEPENDENCIES="
      autoconf
      libncurses5-dev
      unixodbc-dev
      libssl-dev
      libsctp-dev
      libwxgtk3.0-dev
      default-jdk
      fop
      libxml2-utils
      xsltproc
    "

    local RUNTIME_DEPENDENCIES="
      libcanberra-gtk-module
      procps
      libncurses5
      libwxbase3.0-0v5
      libwxgtk3.0-0v5
      libodbc1
      libssl1.1
      libsctp1
      man
    "

  ##############################################################################
  # EXECUTION
  ##############################################################################

    printf "\nGIT BRANCH: ${git_branch}\n"

    # INSTALL DEPENDENCIES
    apt update
    apt -y -q install --no-install-recommends ${INSTALL_BUILD_DEPENDENCIES} ${RUNTIME_DEPENDENCIES}

    # DOWNLOAD ERLANG FROM A GITHUB BRANCH OR TAG
    git clone --depth 1 --branch "${git_branch}" https://github.com/erlang/otp.git OTP

    # INSTALL ERLANG
    cd OTP
    export ERL_TOP="${PWD}"
    ./otp_build autoconf
    gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
    ./configure --build="$gnuArch"
    make -j$(nproc)
    make install
    cd -
    rm -rf OTP

    # SYSTEM CLEANUP
    # we don't need them examples and doc folders, and to see docs just use like:
    #   $ erl -man ets
    find /usr/local -name examples | xargs rm -rf
    find /usr/local -name doc | xargs rm -rf
    apt -y auto-remove ${REMOVE_BUILD_DEPENDENCIES}

    # SMOKE TEST
    erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().'  -noshell
    erl -eval 'io:fwrite("~1p~n", [lists:sort(erlang:loaded())]), halt().'  -noshell

    # To list all erlang modules installed:
    # erl> rp(lists:sort(erlang:loaded())).
}

Main "${@}"

Just sharing what worked for me in case someone else is facing the same issue in the same setup:

  • OS: Ubuntu 20.04 LTS
  • Elixir: 1.12.0
  • Erlang/OTP 24 [erts-12.0.2]

Solution:

sudo apt install libwxgtk-webview3.0-gtk3-0v5
5 Likes