In this tutorial, we will be discussing about how to install Erlang and Elixir in CentOS 7 minimal server. Before installing them, let us see a brief explanation of each.
About Erlang
Erlang is an open source programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang’s runtime system has built-in support for concurrency, distribution and fault tolerance. It is designed at the Ericsson Computer Science Laboratory.
About Elixir
Elixir is a dynamic, functional language designed for building scalable and maintainable applications. Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.
Now, let us start to install Erlang and Elixir in CentOS 7 64bit minimal server.
Prerequisites
Before installing Erlang and Elixir, we need to install the following prerequisites.
yum update
yum install epel-release
yum install gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-1.8.0-openjdk-devel git wget wxBase.x86_64
Install Erlang
The Erlang version in the official repositories might be older. So, let us download and install the latest Erlang version.
Add Erlang official repository to install the latest Erlang.
To do so, head over to the Erlang repository page, and download the repository depending upon the distribution you use:
Since, we are installing Erlang in CentOS 7, I am going to add the following repository.
wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
Update the repository lists with command:
yum update
Install Erlang using command:
yum install erlang
That’s it. The latest Erlang version has been installed.
Verify Erlang
Run the following command to verify whether Erlang is installed or not.
erl
Sample output:
Erlang/OTP 18 [erts-7.3] [source-d2a6d81] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] Eshell V7.3 (abort with ^G) 1>
If you see the Erlang command prompt, it’s working! To close the shell, just press Ctrl-C twice.
Test a sample “hello_world” program in Erlang
Create a new file called “hello.erl”.
vi hello.erl
Add the following lines:
-module(hello). -export([hello_world/0]). hello_world() -> io:fwrite("hello, world\n").
Save and close the file.
Enter to Erlang shell with command:
erl
Run the following commands one by one. Don’t forget to add dot (.) at the end of each command:
c(hello).
hello:hello_world().
Sample output:
Install Elixir
Elixir is available in EPEL repository, but it is very outdated. So, in order to install latest version, we will compile and install it from source file.
Please be mindful that before installing Elixir, you must install Erlang first.
Git clone to the Elixir repository:
git clone https://github.com/elixir-lang/elixir.git
The above command will clone the latest version to a folder called elixir in the current working directory. I have
Go to the elixir directory:
cd elixir/
Run the following command to start compiling elixir:
make clean test
Sample output:
[...] Compiled lib/iex/app.ex Compiled lib/iex.ex Compiled lib/iex/autocomplete.ex Compiled lib/iex/cli.ex Compiled lib/iex/config.ex Compiled lib/iex/history.ex Compiled lib/iex/helpers.ex Compiled lib/iex/introspection.ex Compiled lib/iex/remsh.ex Compiled lib/iex/server.ex Compiled lib/iex/evaluator.ex Compiled lib/iex/info.ex Generated iex app ==> elixir (eunit) All 194 tests passed. ==> elixir (exunit) ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. Finished in 126.1 seconds (81.7s on load, 44.3s on tests) 2909 tests, 0 failures Randomized with seed 29478 ==> ex_unit (exunit) .......................................................................................................................................................................................... Finished in 8.0 seconds (6.5s on load, 1.5s on tests) 186 tests, 0 failures Randomized with seed 540622 ==> logger (exunit) ........................................................................................ Finished in 4.4 seconds (3.9s on load, 0.4s on tests) 88 tests, 0 failures Randomized with seed 662540 ==> mix (exunit) .................................................................................................................................................................................................................................................................................................................. Finished in 91.0 seconds (14.1s on load, 76.8s on tests) 306 tests, 0 failures Randomized with seed 988584 ==> eex (exunit) ....................................................................... Finished in 0.9 seconds (0.8s on load, 0.07s on tests) 71 tests, 0 failures Randomized with seed 955314 ==> iex (exunit) ........................................................................................................... Finished in 5.7 seconds (3.3s on load, 2.3s on tests) 107 tests, 0 failures Randomized with seed 128154
If the tests pass, you are done.
Now, It is highly recommended to add Elixir’s bin path to your PATH environment variable. Otherwise, Elixir will not work.
To do so, run the following command:
export PATH="$PATH:/root/elixir/bin"
Here, I have installed elixir on /root/elixir/ location. You must replace this path with your actual Elixir installation path.
Verify Elixir
To verify whether Elixir is installed or not, run:
iex
Sample output:
Erlang/OTP 18 [erts-7.3] [source-d2a6d81] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] Interactive Elixir (1.3.0-dev) - press Ctrl+C to exit (type h() ENTER for help) iex(1)>
If you see the Elixir’s shell prompt, congratulations!
Again, to close the Elixir’s shell, just press Ctrl-C twice.
To check Elixir’s version:
elixir --version
Sample output:
Elixir 1.3.0-dev (bbf7a23)
That’s it. We have now successfully setup working Erlang and Elixir development environment in CentOS 7 server.
Cheers!
Reference links: