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?
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 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.
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.)
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).
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.
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’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
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).
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.
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