Newbie

04 de Fevereiro de 2024 - @Walmir Neto


O asdf é um gerenciador de múltiplas versões de tempo de execução, ele é usado para instalar linguagem de programação, banco de dados, entre outros.

O desenvolvimento requer a presença de várias versões ao mesmo ambiente. Anteriormente tínhamos que configurar múltiplas ferramentas, como rbenv ou rvm para Ruby, nvm para NodeJS ou ainda phpenv para PHP (obviamente), cada uma com suas próprias configurações e isso dava ou dá muitos conflitos entre as ferramentas. E o ASDF surgiu para resolver isso.

Aqui vou instalar apenas as dependências do próprio asdf

Instalando Dependências

# Ubuntu
sudo apt install coreutils curl git
# macOS
brew install coreutils curl git

Instalando ASDF

git clone <https://github.com/asdf-vm/asdf.git> ~/.asdf --branch v0.14.0

# só checando se instalou de boas
asdf --version

Depois disso, dependendo do “tipo” terminal que você usa, você vai precisar adicionar uma configuração no ~/.zshrc ou similar +info, preciso apenas adicionar asdf ao arquivo de carregamento do seu terminal, no meu caso sendo usuário de drogas pesadas macOS com brew e zsh seria só rodar:

echo -e "\\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc

Acredito que é isso, resumidamente para instalar alguma coisa é sempre o mesmo processo:

# Adiciona plugin
asdf plugin add <name> # OU `asdf plugin add <name> <git_url>`
# Checa versões disponíveis
asdf list-all <name>
# Instalação em si
asdf install <name> <version> # OU asdf install <name> latest
# Seta versão como global
asdf global <name> latest
# Seta versão do diretório atual
asdf local <name> latest
# Verifica qual a versão atual levando em conta o diretório atual
asdf current <name>

Uma última dica, você pode ter um arquivo .tool-versions no diretório root do seu projecto dizendo quais versões são usada pelo seu projeto. Podemos ter um no diretório do usuário do sistema, para definir as versões padrão do sistema, em ambiente Unix é sempre ~/.tool-versions já no Windows não sei muito bem. Enfim, o conteúdo do arquivo normalmente é algo assim:

ruby 3.2.3
postgres 16.1
nodejs 20.11.0

Referencias