Help installing Elixir on Linux Mint

I’m a beginner, using Linux MInt 18.3 Cinnamon. I installed elixir with apt, but it only found version 1.1, and I’d like to use the newest version, but I have been having trouble. From memory here is what happened:

Tried to install elixir 1.8.2 from source. Got error about Erlang (I had version 18).
Installed Erlang 22. Got an error trying to install Elixir.
Installed Erlang 20. Got an error installing Elixir about being compiled in a different version of Erlang. optcode 150-something, but used optcode 168.
Installed Version 21. Same error - only have up to optcode 163, but need up to 168.
Read some github entry which suggest that an error was fixed after 21.0.
Installed 21.1. Crashed, at some make file recipe for targe erlang failed.
Installed 21.2. Crashed, makefile 64: recipe for target erlang failed.

Not sure if its relevant, but I noticed that erlang --version returns command not found: erlang.

Can anyone suggest for me a combination of elixir version and erlang version that should work together? Or help me resolve this problem another way?

I’ve been using Erlang OTP.

This seems to be quite a lot of trying. Can you please remove all of your installation attempts?

Then it’s probably easiest to switch to Arch Linux :wink: or just use a toolset manager like asdf-vm. It will be able to install, run and change appropriate version sets as you specify them per project.

Also in the official documentation there is a compatibility matrix that tells you which version of elixir is known to work with which version of Erlang.

Just remember that the runtime version of Erlang needs to be equal to or greater than the version used for compiling.

1 Like

Installing Elixir on Linux (with asdf)

2 Likes

Thanks for the replies.

I tried asdf as well but was struggling to get it to find the newest version. I hadn’t seen this link so I will try again.

I saw this compatibility table (https://hexdocs.pm/elixir/compatibility-and-deprecations.html#compatibility-between-elixir-and-erlang-otp) but I couldn’t get any of these combinations to work. For instance I tried otp 20, 20.1, 20.2, 21.0, 21.1, 21.2 with a few versions of elixir 1.7 and 1.8 and some other combinations.

I saw the errors about unmatching runtime/compile time Erlang versions, so I’ve been careful to recompile elixir after reinstalling a different Erlang version. I keep getting errors like this though:

Loading of /usr/local/lib/erlang/lib/crypto-4.5/ebin/crypto.beam failed: badfile

Makefile:62: recipe for target ‘erlang’ failed

Anyway, thanks again for the replies, I’ll try asdf again now.

@peerreynders I can’t get asdf to work. I added plugin for elixir, installed then tried to use it and got the error:

01:10:27.753 [error] Loading of /usr/local/lib/erlang/lib/compiler-7.4/ebin/compile.beam failed: :badfile

01:10:27.754 [error] beam/beam_load.c(1878): Error loading module compile:
This BEAM file was compiled for a later version of the run-time system than 21.
To fix this, please recompile this module with an 21 compiler.
(Use of opcode 164; this emulator supports only up to 163.)

:laughing:

3 Likes

Please deinstall all former tries, also make sure that the location containing asdfs shims is located before your systems binaries in PATH.

I had issues installing Elixir on Linux initially too. I ended up using an installer provided on the Erlang Solutions website, which bundled Erlang and Elixir together. That seemed to be the easiest way to get started (though I intend on trying a version manager such as asdf soon).

Edit: Corrected misunderstood website source.

This is not the Erlang website! This is the website of Erlang solutions, a big supporter of the Erlang ecosystem.

Also even though mint is a derivat of Ubuntu, I’d be careful to use the packages that were originally built for Debian and Ubuntu. Dependencies might not be available on mints repositories natively.

PS: even though it doesn’t sound like this right now, usually I strictly prefer installation from the systems package manager over installation from source. But especially for languages compilers I learnt to love version managers like asdf, they really make life easier when one is using them with discipline.

1 Like

My bad on the mix-up. I’ve corrected my post. I agree regarding version managers — I’d love to have a well-designed manager like rvm for Elixir. I’m hoping that asdf is just as user-friendly.

I’ve Linux Mint 19 with over 10 versions of erlang and elixir installed via asdf without any problems:

alexiss@alexiss:/work/home/alexiss$ asdf list erlang
  20.0
  20.1
  20.2.2
  20.2.3
  20.3.1
  20.3.2
  21.0.8
  21.1.1
  21.2.1
  21.3.2
  21.3.6
  21.3.8
  22.0.1
alexiss@alexiss:/work/home/alexiss$ asdf list elixir
  1.5.1
  1.5.2
  1.6.1
  1.6.4
  1.7.2
  1.7.3
  1.7.4
  1.8.1
  1.8.2
alexiss@alexiss:/work/home/alexiss$ 

Try to install it step-by-step following links from this post

Also make sure you complete all steps for Ubuntu before installing erlang

1 Like

if you uninstall everything these incantations should work.

#####################################################
# install elixir (only need to do once)
#
# UBUNTU:
#

wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb 
sudo dpkg -i erlang-solutions_1.0_all.deb

sudo apt-get update
sudo apt-get install esl-erlang
sudo apt-get install elixir

I’m not confident I can figure out how to uninstall everything, so maybe my best bet is to get asdf working. I followed the instructions on how to do it, and when installing the erlang version it got as far as saying it was missing fop and another tool for building documentation. Usually when I was installing from source this is where the installation ended, but with asdf I waited 5 minutes before killing the process as it seemed like the command would never terminate. I also got stuck on the command

bash ~/.asdf/plugins/nodejs/bin/import-release-team-keyring

it said I was waiting for a key for a long time.

That’s why it’s better to always use a package manager. I also fear that something got broken somewhere during one of your attempts, and even if you end up making it work with asdf or others you might continue experiencing weird things down the line. If I were you I would reinstall the OS (no Arch Linux :p), then either use asdf or the deb from erlang solutions (I think that’s what I did when I was on Mint, and also on debian ; it worked well).

On my machine erlang installation running above 7 minutes - may be you should wait a little longer

2 Likes

As far as I remember asdf compiles from source but silencing the output. Just wait.

1 Like

I reinstalled Linux Mint version 19 this time, and was able to get Elixir 1.9 working. I tried apt install elixir, but still I the latest version it could find was 1.3.3. I removed it, and removed erlang-base.

What eventually worked was to install erlang by apt install erlang-base and then to download the precompiled elixir 1.9 from the elixir-lang website. (I also tried to compile it myself, but this did not work - there was an error finding something from erlang). I was able to add it my PATH and everything is working smoothly now.

The instructions to install the erlang-solutions .deb file did not work for me - I still only got version 1.3.3 of elixir.

ESL does not build for Linux Mint, so whatever you install seems to assume a version of ubuntu or debian that di not receive any further updates after 1.3.3. As far as I can tell, it assumes Debian Wheezy, as this in fact did not receive the 1.3.4 update from what I see on the ESL download page.

Please do not install random packages that are not meant for your system.

Thanks NobbZ!

Hello,

fellow Linux Mint user here!

The erlang solutions route described for Ubuntu here should work - at least it used to for me. I also switched to asdf though for pure convenience, and yes erlang takes a while to compile but you don’t install new erlang versions all that often :slight_smile: