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
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
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
Se você utilizar Oh My ZSH, apenas adicione o plugin asdf
nas configurações de plugin:
plugins=(asdf)
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
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
...
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
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
...
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
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
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
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.
Top comments (3)
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
.Perfeito, isso ajuda muito no onboard de novos integrantes do time.
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.