DEV Community

Cover image for Múltiplas versões do Elixir com ASDF
Vitor Leal
Vitor Leal

Posted on

10 3

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.

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (3)

Collapse
 
wlsf profile image
Willian Frantz

Muito bacana o texto e a dica de usar ASDF, obrigado por compartilhar Vitor!

Acho que uma das funções que eu mais aprecio no ASDF, é que ele também serve para ajudar com o setup do projeto. Por exemplo, se uma pessoa nova entra no seu time, ela só precisa ter o ASDF, e rodar asdf install dentro da pasta do projeto com o .tool-versions.

Collapse
 
vitorleal profile image
Vitor Leal

Perfeito, isso ajuda muito no onboard de novos integrantes do time.

Collapse
 
hugolacerdar profile image
Hugo Lacerda

Valeu por compartilhar! Utilizei o ASDF somente nas primeiras instalações por enquanto, mas esse artigo será uma ótima referência para quando for navegar por mais versões.

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay