Logo

dev-resources.site

for different kinds of informations.

📩 ASDF: Gerenciando versĂ”es de linguagens e ferramentas num lugar sĂł

Published at
11/27/2024
Categories
asdf
rbenv
nvm
mvn
Author
adrianoavelino
Categories
4 categories in total
asdf
open
rbenv
open
nvm
open
mvn
open
Author
14 person written this
adrianoavelino
open
📩 ASDF: Gerenciando versĂ”es de linguagens e ferramentas num lugar sĂł

Imagine que vocĂȘ estĂĄ em um restaurante fast-food e vocĂȘ tem a liberdade de escolher os acompanhamentos do seu lanche. VocĂȘ pode optar por um pĂŁo integral, carne de frango grelhada, queijo cheddar e tomate. Mas e se, na prĂłxima vez, vocĂȘ quiser um hambĂșrguer com bacon e cebola caramelizada?

O asdf funciona como esse fast-food. No lugar de lanches, temos linguagens de programação e ferramentas como Python, Ruby, Node.js, etc. Em vez de ingredientes, temos versÔes específicas dessas linguagens.

Como funciona:

  • VocĂȘ, o cliente: É o desenvolvedor que precisa de uma determinada versĂŁo de uma linguagem para um projeto especĂ­fico.
  • O menu: É o repositĂłrio de plugins do asdf, onde vocĂȘ encontra todas as linguagens e ferramentas disponĂ­veis.
  • O funcionĂĄrio: É o prĂłprio asdf, que vai buscar a versĂŁo exata da linguagem que vocĂȘ escolheu e configurĂĄ-la para vocĂȘ. Exemplo:

Imagine que vocĂȘ estĂĄ trabalhando em dois projetos: um que usa Python 3.6 e outro que usa Python 3.9. Com o asdf, vocĂȘ pode instalar ambas as versĂ”es e configurar cada projeto para usar a versĂŁo correta, sem conflitos.

Em resumo:

O asdf Ă© como um restaurante fast-food onde vocĂȘ monta o seu prĂłprio lanche, mas em vez de comida, vocĂȘ estĂĄ "montando" o seu ambiente de desenvolvimento. É uma ferramenta poderosa e flexĂ­vel que pode te ajudar a gerenciar mĂșltiplas versĂ”es de linguagens de programação de forma eficiente e organizada.

Neste post, vamos explorar como instalar e usar o asdf para gerenciar suas dependĂȘncias de forma eficaz. Mas antes, vamos entender:

O que Ă© o asdf?

O asdf Ă© um gerenciador de versĂ”es universal que permite que vocĂȘ utilize mĂșltiplas versĂ”es de linguagens de programação e ferramentas, tudo em um sĂł lugar. Com ele, vocĂȘ pode alternar entre diferentes versĂ”es de uma mesma linguagem como se estivesse trocando de roupa, facilitando seu fluxo de trabalho e evitando conflitos.

Ao contrĂĄrio de outros gerenciadores, como o rbenv para Ruby ou o nvm para Node.js, o asdf se destaca pela sua versatilidade. Ele suporta uma variedade de linguagens atravĂ©s de plugins. VocĂȘ pode ter vĂĄrias versĂ”es do Node.js, Python ou Java instaladas e alternar entre elas sem esforço.

Se ainda nĂŁo ficou muito claro, FĂĄbio Akita fala e dĂĄ algumas dicas de uso do asdf no seu vĂ­deo The DEFINITIVE UBUNTU Guide for Beginning Devs, no minuto 40:42.

Neste post, vamos explorar como instalar e usar o asdf para gerenciar suas dependĂȘncias de forma prĂĄtica. Mas antes, vamos entender dois conceitos-chave: plugins e versĂ”es.

Plugins e versÔes

De acordo com a documentação oficial, plugins sĂŁo as extensĂ”es que permitem ao asdf gerenciar diferentes ferramentas, como Node.js, Ruby e Elixir. JĂĄ as versĂ”es sĂŁo as diferentes iteraçÔes das dependĂȘncias que vocĂȘ pode utilizar. Por exemplo, vocĂȘ pode optar pela versĂŁo v20.18.0 do Node.js para um projeto especĂ­fico, enquanto usa uma versĂŁo diferente para outro.

Pronto para mergulhar no mundo do asdf? EntĂŁo vamos Ă  prĂĄtica!

Principais Comandos do asdf

Esses são os comandos essenciais para instalar, listar e gerenciar versÔes no asdf.

  • asdf list: Lista todos os plugins e as versĂ”es jĂĄ instaladas no seu ambiente. Ideal para verificar rapidamente o que estĂĄ disponĂ­vel.

  • asdf plugin add <NOME-DO-PLUGIN>: Adiciona um plugin ao asdf para que ele gerencie uma nova linguagem ou ferramenta. Por exemplo, para adicionar o plugin do Python, digite:

asdf plugin add python
Enter fullscreen mode Exit fullscreen mode
  • asdf list all <NOME-DO-PLUGIN>: Lista todas as versĂ”es disponĂ­veis para um plugin especĂ­fico, permitindo que vocĂȘ escolha a que deseja instalar. Exemplo para ver as versĂ”es do Python:
asdf list all python
Enter fullscreen mode Exit fullscreen mode
  • asdf install <NOME-DO-PLUGIN> <VERSAO>: Instala uma versĂŁo especĂ­fica de uma linguagem ou ferramenta. Para instalar a versĂŁo 3.13.0 do Python, por exemplo, use:
asdf install python 3.13.0
Enter fullscreen mode Exit fullscreen mode
  • asdf global <NOME-DO-PLUGIN> <VERSAO>: Define uma versĂŁo especĂ­fica de uma linguagem ou ferramenta como padrĂŁo para todo o sistema. Para definir a versĂŁo 3.13.0 do Python como global, digite:
asdf global python 3.13.0
Enter fullscreen mode Exit fullscreen mode
  • asdf local <NOME-DO-PLUGIN> <VERSAO>: Define uma versĂŁo especĂ­fica de uma linguagem ou ferramenta apenas para o diretĂłrio atual do projeto. Navegue atĂ© a pasta do projeto e execute o comando. Por exemplo:
asdf local python 3.13.0
Enter fullscreen mode Exit fullscreen mode

Observação: Este comando cria um arquivo chamado .tool-versions na pasta do projeto, permitindo configurar uma versão específica para cada repositório, independentemente da versão global.

Agora que jĂĄ conhecemos os comandos bĂĄsicos, vamos turbinar o nosso ambiente com alguns plugins e versĂ”es. VĂȘm comigo!

Instalação do asdf

Observação: se vocĂȘ Ă© daquelas pessoas que gosta de fazer testes na ferramenta antes de configurar no seu ambiente, vocĂȘ pode ir para o item (Opcional) LaboratĂłrio e prĂĄticar em um container docker para avaliar o asdf.

Clone o respositorio para a sua pasta home:

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

Execute os comandos abaixo para configurar o seu ~/.bashrc:

echo '. "$HOME/.asdf/completions/asdf.bash"' >> ~/.bashrc
echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

Aplique as configuraçÔes no terminal ativo:

source ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

Para outros tipos de shell como o zsh ou fish shell, acesse a documentação oficial do asdf.

Guia Pråtico para Instalação de Plugins e VersÔes com o asdf

Vamos instalar plugins e definir versĂ”es de linguagens e ferramentas populares com o asdf! A cada passo, vocĂȘ verĂĄ como configurar o ambiente para Node.js, Java, Maven e Python.

🚀 Começando com Node.js

Para configurar o Node.js no seu ambiente, siga estes passos:

1- Instalar dependĂȘncias: Vamos garantir que o sistema tenha todas as dependĂȘncias que vocĂȘ precisa.

sudo apt-get install dirmngr gpg curl gawk
Enter fullscreen mode Exit fullscreen mode

2- Adicionar o plugin do Node.js: Com o plugin, o asdf serå capaz de gerenciar versÔes do Node.

asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
Enter fullscreen mode Exit fullscreen mode

3- Verificar o plugin instalado:

asdf list
Enter fullscreen mode Exit fullscreen mode

VocĂȘ deve ver algo assim:

nodejs
  No versions installed
Enter fullscreen mode Exit fullscreen mode

4- Instalar uma versĂŁo do Node.js:

O primeiro passo antes de instalar uma versão, é escolher uma versão disponível e para isso liste as versÔes disponíveis:

asdf list all nodejs
Enter fullscreen mode Exit fullscreen mode

VocĂȘ deve ver uma lista semelhante ao exemplo abaixo:

...
22.11.0
23.0.0
23.1.0
Enter fullscreen mode Exit fullscreen mode

Escolha uma das versÔes disponíveis e execute o comando abaixo para instalar, por exemplo, a versão 23.0.0:

asdf install nodejs 23.0.0
Enter fullscreen mode Exit fullscreen mode

5- Definir a versĂŁo do Node.js:

  • Globalmente (para todo o sistema):
asdf global nodejs 23.0.0
Enter fullscreen mode Exit fullscreen mode

Não se esqueça, o próximo passo é opcional, mas para executar, instale a versão latest com o comando asdf install nodejs latest.

  • Localmente (apenas no diretĂłrio atual):
asdf local nodejs latest # ou qualquer outra versĂŁo disponĂ­vel
Enter fullscreen mode Exit fullscreen mode

6- Verifique a versĂŁo do nodejs:

node --version
Enter fullscreen mode Exit fullscreen mode

☕ Configurando o Java

1- Adicionar o plugin do Java: Isso permite instalar e gerenciar versÔes do Java no asdf.

asdf plugin add java https://github.com/halcyon/asdf-java.git
Enter fullscreen mode Exit fullscreen mode

2- Verificar as versÔes disponíveis do Java:

asdf list all java
Enter fullscreen mode Exit fullscreen mode

3- Configurar a variĂĄvel JAVA_HOME: Para garantir que o sistema identifique o Java.

echo . ~/.asdf/plugins/java/set-java-home.bash >> ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

4- Instalar uma versĂŁo especĂ­fica do Java:

asdf install java adoptopenjdk-8.0.432+6
Enter fullscreen mode Exit fullscreen mode

Observação: vocĂȘ pode executar o comando asdf list all java para ver as versĂ”es disponĂ­veis.

5- Verificar a versĂŁo do Java instalada:

java -version
Enter fullscreen mode Exit fullscreen mode

6- Definir a versĂŁo do Java globalmente:

asdf global java adoptopenjdk-8.0.432+6
Enter fullscreen mode Exit fullscreen mode

🔧 Configurando o Maven

1- Adicionar o plugin do Maven:

asdf plugin add maven
Enter fullscreen mode Exit fullscreen mode

2- Instalar a versĂŁo mais recente do Maven:

asdf install maven latest
Enter fullscreen mode Exit fullscreen mode

3- Definir a versĂŁo global do Maven:

asdf global maven latest
Enter fullscreen mode Exit fullscreen mode

4- Verifique a versĂŁo do maven instalada:

mvn --version
Enter fullscreen mode Exit fullscreen mode

🐍 Configurando o Python

1- Instalar dependĂȘncias para o Python:

sudo apt-get update && sudo apt-get install -y \
       make build-essential libssl-dev zlib1g-dev \
       libbz2-dev libreadline-dev libsqlite3-dev wget curl \
       llvm libncurses5-dev libncursesw5-dev \
       xz-utils tk-dev libffi-dev liblzma-dev \
       git
Enter fullscreen mode Exit fullscreen mode

2- Adicionar o plugin do Python:

asdf plugin add python
Enter fullscreen mode Exit fullscreen mode

3- Instalar a versĂŁo mais recente do Python:

asdf install python latest
Enter fullscreen mode Exit fullscreen mode

4- Definir a versĂŁo global do Python:

asdf global python latest
Enter fullscreen mode Exit fullscreen mode

5- Verifique a versĂŁo do python:

python --version
Enter fullscreen mode Exit fullscreen mode

Esses passos são suficientes para instalar e configurar as linguagens e ferramentas essenciais no asdf. Com essas instruçÔes, seu ambiente estarå preparado para alternar entre versÔes específicas conforme necessårio.

(Opcional) LaboratĂłrio

Se vocĂȘ estĂĄ aqui Ă© porque vocĂȘ ficou interessado em testar o asdf antes de configurar em sua mĂĄquina. Sendo assim, vamos lĂĄ!

Pré-requisitos:

  • Docker
  • Docker Compose

Criando o ambiente

Para facilitar o laboratĂłrio com o asdf, preparamos um ambiente configurado e pronto para uso em um container Docker. VocĂȘ sĂł precisa criar os arquivos indicados abaixo:

Arquivo Dockerfile:

FROM ubuntu:24.04

# Atualiza o sistema e instala as dependĂȘncias
RUN apt-get update && apt-get install -y \
    make build-essential libssl-dev zlib1g-dev \
    libbz2-dev libreadline-dev libsqlite3-dev wget curl \
    llvm libncurses5-dev libncursesw5-dev \
    xz-utils tk-dev libffi-dev liblzma-dev \
    git nano sudo

# Adiciona um novo usuĂĄrio
RUN useradd -m -s /bin/bash usuario && \
echo "usuario:123" | chpasswd && \
usermod -aG sudo usuario

# Da permissÔes sudo sem senha para o novo usuårio
RUN echo "usuario ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

# Comando inicial para rodar o container no terminal do novo usuĂĄrio
USER usuario

# Instala e configura o asdf
RUN git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
RUN echo '. "$HOME/.asdf/completions/asdf.bash"' >> ~/.bashrc && \
    echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc

CMD ["/bin/bash"]
Enter fullscreen mode Exit fullscreen mode

Arquivo docker-compose.yml:

services:
  asdf:
    build:
      context: .  # Indica o diretĂłrio onde estĂĄ o Dockerfile
      dockerfile: Dockerfile
    container_name: asdf
    tty: true  # Mantém o terminal aberto
Enter fullscreen mode Exit fullscreen mode

Construindo e executando o container

Com os arquivos prontos, execute o container com o comando abaixo:

docker compose up -d --build
Enter fullscreen mode Exit fullscreen mode

Onde:

  • -d: Executa o container em segundo plano
  • --build: Recria o container se o Dockerfile mudar

💡 Isso deve demorar um tempinho para instalar todas as dependĂȘncias... ⏳ Aproveite para esticar as canelas e tomar uma ĂĄgua 💧!

Após a instalação, acesse o container com o seguinte comando:

docker compose exec asdf bash
Enter fullscreen mode Exit fullscreen mode

Agora vocĂȘ estĂĄ pronto para seguir com o tutorial no tĂłpico Guia PrĂĄtico para Instalação de Plugins e VersĂ”es com o asdf e testar os comandos do asdf!

Links

Featured ones: