My advice is to steer away for the tempting and illusory ease of typing brew install elixir
and brew install erlang
. Using brew is rarely a good solution to installing languages.
It will force you to have only one version of the language to use at any point in time, and when (in the rare, but still plentiful occurring) case of a specific language version being needed for one of your projects, you'll have to fiddle a lot and break your other projects.
Versioned language management is the way to go, to minimise hassle.
At the end of this guide you'll have an environment that:
- can build Elixir and Erlang from source
- is upgradable using only the command line
- can keep multiple versions of Elixir and Erlang around
In Erlang's and Elixir's case there are mature options that worked for me. In this guide we'll use kerl, exenv and elixir-build.
Install kerl and Erlang####
The first thing to do is to get kerl:
curl -O https://raw.githubusercontent.com/spawngrid/kerl/master/kerl
chmod a+x kerl
move it to a directory included in your path:
mv kerl /usr/local/bin/
Configure the options you want it to use to build Erlang:
touch ~/.kerlrc
KERL_CONFIGURE_OPTIONS="--disable-hipe --enable-smp-support --enable-threads
--enable-kernel-poll --without-odbc --enable-darwin-64bit"
Check that you have autoconf, if not install it with brew:
which autoconf
brew install autoconf
When you have kerl, slightly counter intuitively, you have first to build an Erlang version and give it a name and then you can install it.
That allows you to have more than one version of the same Erlang version built with different build settings.
kerl list releases
Choose one of the available releases on kerl.
kerl build <vers> <name>
Check your build was successfull
kerl list builds
Install your build:
kerl install <name> <path>
You also must activate it, which looks like it has to be done every time. You might want to add it to you .bash_profile.
$ . /path/to/install/dir/activate
My reference for the kerl and Erlang install is the Basho docs
Install Exenv####
Exenv and its plugin elixir-build are what you need for Elixir installation.
Checkout exenv in ~/.exenv
git clone git://github.com/mururu/exenv.git ~/.exenv
Add its executables to the path
$ echo 'export PATH="$HOME/.exenv/bin:$PATH"' >> ~/.bash_profile
Add exenv init to your shell
echo 'eval "$(exenv init -)"' >> ~/.bash_profile
Restart your shell and you'll have exenv available.
Install Elixir-build and Elixir####
Checkout elixir-build in exenv's plugin directory
git clone git://github.com/mururu/elixir-build.git ~/.exenv/plugins/elixir-build
Now you can install Elixir automatically using exenv
exenv install <version>
To see all available versions use exenv
exenv install --list
Elixir versions will be installed into a directory of the same name under ~/.exenv/versions
.
After you have installed Elixir use rehash to install shims for all Elixir binaries known to exenv
exenv rehash
To check that Elixir has been install properly run
exenv versions
it will show you all installed Elixir versions.
You can set a version of Elixir local to a directory using
exenv local <version>
You can set a global version using
exenv global <version>
With this your dev environment is installed and you can start to develop with Elixir.
Next: Take your Elixir environment for a spin (Coming soon)
Comments? Give me a shout at @lambda_cat.
To get the latest post updates subscribe to the LambdaCat newsletter.
You can support my writing on LambdaCat's Patreon.