Já precisou instalar mais de uma versão de uma ferramenta para determinado projeto? Seja porque sua automação com Terraform não funciona com a versão mais recente, ou porque um bug no Node.js só aparece em uma versão específica? Neste artigo vamos apresentar uma ferramenta que resolve esses e outros problemas com uma abordagem unificada.
Por que usar o ASDF?
O ASDF surge como uma alternativa mais genérica a ferramentas específicas, como o nvm que gerencia apenas versões do Node.js. Já falamos sobre isso no artigo Instalando e gerenciando várias versões do Node.js mas aqui o foco é no ASDF como uma solução extensível para múltiplas linguagens.
O objetivo do ASDF é fornecer um núcleo simples para que a comunidade possa desenvolver plugins reutilizáveis, permitindo o gerenciamento de versões de praticamente qualquer ferramenta.
Pré Requisitos
Até o momento em que escrevemos este artigo, o ASDF é compatível com Linux e macOS. Usuários de Windows precisarão instalar o WSL (Windows Subsystem for Linux).
Será necessário ter o curl instalados na máquina. Para instalar em distribuições baseadas no Debian
sudo apt install curl
BashInstalação do ASDF core
Estamos utilizando o Bash no Ubuntu via WSL. Caso utilize outro shell, ajuste o comando conforme a documentação oficial.
Usaremos um script de instalação desenvolvido por nós. Se quiser verificar o código antes, ele está disponível no repositório do Code in Loop no GitHub:
sudo curl -fsSL https://raw.githubusercontent.com/codeinloop/asdf-installer/main/install-latest-asdf.sh | bash
Bash❗Execute com o usuário final que utilizará o ASDF, e não como root
, para evitar configurações incorretas.
Para testar se está tudo certo:
asdf
Bash
Entendendo o ASDF e seus principais comandos
Escopos de instalação
O ASDF permite definir escopos diferentes para as versões instaladas:
- Global: torna a versão disponível para todos os projetos e usuários do sistema.
asdf global nodejs 16.5.0
JavaScript- Local: válida apenas no diretório atual (um .tool-versions é criado).
asdf local nodejs 14.20.0
JavaScriptAnatomia do ASDF: Comandos essenciais
asdf list all <PLUGIN> # Lista todas as versões disponíveis
asdf list <PLUGIN> # Lista as versões instaladas
asdf install <PLUGIN> <VERSAO> # Instala uma versão específica
asdf uninstall <PLUGIN> <VERSAO> # Remove uma versão
asdf current # Mostra as versões em uso no diretório atual
asdf where <PLUGIN> <VERSAO> # Mostra o caminho da instalação
asdf set <PLUGIN> <VERSAO> # Define versão local
asdf set -u <PLUGIN> <VERSAO> # Define versão global
asdf plugin list # Lista plugins instalados
asdf plugin list all # Lista todos os plugins disponíveis
asdf plugin update --all # Atualiza todos os plugins instalados
JavaScriptPrincipais plugins e como instalar
Alguns plugins recomendados pelo nosso time:
Java
asdf plugin add java https://github.com/halcyon/asdf-java.git
BashNode.js
asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
BashPython
asdf plugin add python
BashTerraform
asdf plugin add terraform https://github.com/asdf-community/asdf-hashicorp.git
BashConclusão
Já conhecia o ASDF? Utiliza outra ferramenta para esse tipo de gerenciamento? Deixe seu comentário — ele pode virar um próximo artigo!
Agradecimento especial ao Eduardo, que recomendou o ASDF em um dos nossos vídeos.