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
# Ubuntu
sudo apt install coreutils curl git
# macOS
brew install coreutils curl git
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