Skip to main content

Command Palette

Search for a command to run...

Install Elixir and Erlang with asdf version manager

Updated
3 min read
Install Elixir and Erlang with asdf version manager
B

My name is Benjamín Silva, I studied Computer Science. I try to keep up to date on technologies and best practices and this blog is a personal project that hopefully helps me on that. I believe making myself write tech stuff is a good way to share my knowledge at the same time keep me learning new things.

What I'm using on my daily work: Elixir (and Phoenix), Ruby on Rails, Rspec, PostgreSQL, Vue.js, Elasticsearch, AWS, Docker

What else I know or I used before: Android Native, React, Python Django

If you come from Ruby on Rails for example, it's very common to have rvm to manage your Ruby versions, but also you would probably need to install nvm to manage versions for Node.js too (since Rails now has webpack assets pipeline).

This same story happens with Phoenix Framework, but even adding a third language to the stage: Erlang, Elixir and Node.js

So how do we manage all involved languages versions with one single version manager?

meet asdf version manager

You can install it following the installation instructions

After installing, simply install an Erlang version by running

# to add the erlang plugin
$ asdf plugin-add erlang https://github.com/asdf-vm/asdf-erlang.git
# to list all available erlang versions
$ asdf list-all erlang

A long list may appear, you usually would want to install the latest (at the bottom)

$ asdf install erlang 22.0.7

After installing Erlang, you can proceed to install Elixir with the same approach

$ asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git
$ asdf list-all elixir
$ asdf install elixir 1.4.9

Then, in your project folder, you can tell asdf to select specific versions of software by adding a .tool-versions file with some content like this:

elixir 1.9.1
erlang 22.0.7
nodejs 10.16.0

If you call asdf current to see whats the current versions of each configured plugin inside the current working directory

$ asdf current

  elixir   1.9.1    (set by /Users/benja/dev/newslettex/.tool-versions)
  erlang   22.0.7   (set by /Users/benja/dev/newslettex/.tool-versions)
  version 10.16.0 is not installed for nodejs

You notice that it says node 10.16.0 is not installed, because it reads the .tool-versions and finds out we don't have the requested nodejs version. To install it, simply:

$ asdf plugin-add nodejs https://github.com/asdf-vm/asdf-nodejs.git
$ brew install coreutils
$ brew install gpg
$ bash ~/.asdf/plugins/nodejs/bin/import-release-team-keyring
$ asdf install nodejs 10.16.0

Now you have all your versions managed under asdf.

More from this blog

9

96codes.dev | a dev blog by Benjamín Silva @silva96

6 posts