Múltiplas versões do Elixir com ASDF

vitorleal

Vitor Leal

Posted on June 10, 2021

Múltiplas versões do Elixir com ASDF

ASDF

O gerenciador de versões ASDF é uma linha de comando open-source disponível no GitHub que permite instalar múltiplas versões de diversas linguagens na mesma máquina, incluindo Elixir e Erlang.


Instalando manualment

Primeiro clone o projeto do GitHub com o seguinte comando:

git clone https://github.com/asdf-vm/asdf.git ~/.asdf
Enter fullscreen mode Exit fullscreen mode

Se por algum acaso você quiser desinstalar o asdf da sua maquina basta deleter a pasta ~/.asdf.


Instalando via Homebrew (apenas no Mac)

Para instalar utilizando o Homebrew basta executar o comando:

brew install asdf
Enter fullscreen mode Exit fullscreen mode

Configurando a Shell

Agora que você tem a linha de comando instalada na sua maquina você deve configurar a sua shell, no caso do zsh adicione esse linha no arquivo ~/.zshrc.

. $HOME/.asdf/asdf.sh
Enter fullscreen mode Exit fullscreen mode

Se você utilizar Oh My ZSH, apenas adicione o plugin asdf nas configurações de plugin:

plugins=(asdf)
Enter fullscreen mode Exit fullscreen mode

Se por acaso utilizar alguma outra shell pode olhar a documentação como realizar a configuração.


Instalando os plugins

Agora que temos o asdf instalado e configurado na nossa maquina podemos instalar os plugins das linguagens que a gente quer que ele gerencie as versões, no caso deste post o Elixir e o Erlang.

asdf plugin add erlang
asdf plugin add elixir
Enter fullscreen mode Exit fullscreen mode

Instalando Erlang/OTP

Para saber as verões disponíveis para instalar execute o comando:

asdf list-all erlang

23.3.4.3
24.0-rc1
24.0-rc2
24.0-rc3
24.0
24.0.1
24.0.2
...
Enter fullscreen mode Exit fullscreen mode

Quando listar todas as versões disponíveis escolha a que deseja instalar e execute o comando a seguir para instalar:

asdf install erlang 23.3.4.3
Enter fullscreen mode Exit fullscreen mode

Perceba que diferente de outros gerenciadores de versão o asdf precisa que você seja específico na versão que deseja instalar, ex: 23.3.4.3

Para realizar a build do Erlang você vai precisar de algumas dependências instaladas. No Linux execute o comando:

apt-get -y install build-essential autoconf m4 libncurses5-dev libwxgtk-webview3.0-gtk3-dev libwxgtk3.0-gtk3-dev libgl1-mesa-dev libglu1-mesa-dev libpng-dev libssh-dev unixodbc-dev xsltproc fop libxml2-utils libncurses-dev openjdk-11-jdk


Instalando Elixir

Depois de instalar a versão do Erlang no passo anterior você pode listar as verões do Elixir disponíveis executando o comando:

asdf list-all elixir

1.12.1
1.12.1-otp-22
1.12.1-otp-23
1.12.1-otp-24
master
master-otp-21
master-otp-22
master-otp-23
master-otp-24
...
Enter fullscreen mode Exit fullscreen mode

Como você pode perceber o Elixir tem múltiplas versões compiladas para cada major release do Erlang/OTP.

Agora você escolher a verão desejada compatível com a versão do Erlang instalada anteriormente e executar o comando para instalar:

asdf install elixir 1.12.1-otp-23
Enter fullscreen mode Exit fullscreen mode

Selecionando uma verão para usar

Agora que a gente já sabe instalar as diversas verões disponíveis na mesma máquina vamos ver como selecionar a verão desejada. O asdf permite a gente fazer isso de duas formas.

Em uma pasta específica

Para definir uma versão para uma pasta específica a gente utiliza o comando local do asdf:

asdf local erlang 23.3.4.3
asdf local elixir 1.12.1-otp-23
Enter fullscreen mode Exit fullscreen mode

Esse comando local vai criar na pasta que você executou o comando um arquivo .tool-versions que é utilizado pela linha de comando para definir a versão das linguagens que vai ser utilizado naquele projeto.

De forma global

Para definir uma versão para todos os projetos que não tenham uma versão definida ainda você pode utilizar o comando global do asdf.

asdf global erlang 23.3.4.3
asdf global elixir 1.12.1-otp-23
Enter fullscreen mode Exit fullscreen mode

Este comando vai criar no seu diretório home o arquivo .tool-versions que vai definir as versões das linguagens que tem que ser utilizadas.


Espero que o conteúdo tenha sido útil para vocês.

💖 💪 🙅 🚩
vitorleal
Vitor Leal

Posted on June 10, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related