Desenvolvimento

ASDF: Gerenciando múltiplas versões de Python, Java, Node e mais!

Já precisou instalar mais de uma versão de uma ferramenta para determinada situação? Seja porque a sua automatização com Terraform não roda com a última versão ou ainda que um bug com node só acontece com determinada versão. Neste artigo vamos dar a dica que resolve esses e outros problemas com uma ferramenta só.

Essa ferramenta vem como uma alternativa mais genérica a ferramentas especialistas como NVM que gerencia apenas versões do node, neste artigo: Instalando e gerenciando várias versões do Node.js falamos mais dela. Seu objetivo é ter um núcleo bem definido para que a comunidade construa plugins e gerencie versão de praticamente tudo.

Pré Requisitos

Até o momento em que escrevemos o artigo o asdf é compatível apenas com Linux e MacOs. Para usuários de Windows será necessário instalar o WSL.

Para essa instalação será necessário ter em sua máquina tanto o git quanto o curl, caso não tenha basta seguir os comandos abaixo:

sudo apt install curl git jq -y
Bash

Instalação do ASDF core

Em nossa instação estamos usando o bash no ubuntu rodando via WSL, caso use outro tipo de terminal será necessário modificar a última etapa da instalação.

Para instalação vamos fazer um clone do projeto e fazer checkout na última tag disponível.

export latest_tag=$(curl -s "https://api.github.com/repos/asdf-vm/asdf/tags" | jq -r '.[0].name')
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch $latest_tag
Bash

Lembre-se de fazer isso com o seu usuário que fará uso da ferramenta, para evitar instalação acidental com usuário root.

Após o download, podemos rodar o comando abaixo que irá inserir 2 linhhas no nosso .bashrc:

echo -e "\n. \"\$HOME/.asdf/asdf.sh\"\n. \"\$HOME/.asdf/completions/asdf.bash\"" >> ~/.bashrc
Bash

Caso não use bash veja aqui outros exemplos.

Após esse comando já podemos sincronizar nosso terminal, seja fechando e abrindo outro ou rodando o comando abaixo:

source ~/.bashrc
Bash

Com isso, já podemos rodar o asdf e ver sua tela inicial, que será semelhante a esta:

asdf
Bash

Entendendo o ASDF e Principais comandos

Agora que já temos o asdf instalado vamos entender os principais comandos que serão muito úteis para usar a ferramenta da melhor forma.

Entendendo o escopo de instalação

Independente de qual plugin for usar, tenha em mente que temos 2 escopos de instalação: a local e a global.

  • Global: toda instalação global deixará a ferramenta disponível para toda pasta no sistema operacional, incluindo outros usuários.
  • Local: Neste caso é criado um arquivo .tool-versions indicando que apenas dentro daquela pasta determinada versão será aplicada

Por exemplo podemos ter em toda máquina o node 20 e apenas em um projeto específico o node 14, fazemos isso usando o escopo global e local.

Anatomia do ASDF

Independentemente do plugin que vamos instalar, ele terá um padrão de comandos aceitos que são os abaixo:

asdf list-all <PLUGIN> # Lista todas as versões disponíveis de um plugin
asdf list <PLUGIN> # Lista todas as versões instaladas do plugin
asdf list all <PLUGIN> <VERSAO> # Lista todas as versões compatíveis com o termo buscado
asdf install <PLUGIN> <VERSAO> # instala a versão de uma ferramenta 
asdf uninstall <PLUGIN> <VERSAO> # Desinstala a versão de uma ferramenta
asdf shell <PLUGIN> <VERSAO> # Troca a versão da ferramenta no shell corrente
asdf where <PLUGIN> <VERSAO> # Mostra o diretorio onde o plugin foi instalado
asdf local <PLUGIN> <VERSAO> # Troca a versão da ferramenta somente no diretório corrente
asdf global <PLUGIN> <VERSAO> # Troca a versão globalmente
asdf plugin list # Lista todos os plugins instalados. Adicione --urls para ver o repositório de origem e --refs para saber a versão
asdf plugin list all # Lista todos os plugins disponíveis para instalação
asdf plugin update --all # Atualiza todos os plugins instalados
Bash

Mostramos os principais comandos, para ver todos basta rodar asdf no seu terminal.

Principais plugins e como instalar

Neste bloco, damos uma dica dos principais plugins segundo nosso time. Para ver todos os plugins disponíveis e como fazer a instalação, recomendamos a documentação.

Java

asdf plugin-add java https://github.com/halcyon/asdf-java.git
Bash

Node.js

asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
Bash

Python

asdf plugin-add python
Bash

Terraform

asdf plugin-add terraform https://github.com/asdf-community/asdf-hashicorp.git
Bash

Conclusão

Já conhecia essa ferramenta? Conhece outra? Deixe nos comentários que seu comentário pode virar um artigo. Gostaríamos de agradecer ao Eduardo que no vídeo comentou essa ferramenta.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.