ASDF Atualizando versões específicas do Elixir e ERLang

# install asdf plugins for desired packages
asdf plugin-add erlang
asdf plugin-add elixir

# see plugins installed
asdf list

# see current versions already set
asdf current

# install desired versions for each pack
asdf install erlang 24.0.2
asdf install elixir 1.12.1

# now you see installed versions
asdf list

# set desired version as global setting
asdf global erlang 24.0.2
asdf global elixir 1.12.1

# check again the versions installed
asdf list
asdf current

# in my case I needed to run a more specific command, but this was also suggested by asdf when listing
asdf install elixir 1.12.1-otp-24

# done! checking final installation
asdf list
asdf current

Aqui um passo a passo de atualização dos pacotes Elixir e ERLang para versões específicas desejadas. no meu caso eu estava trabalhando num app onde as versões de cada pacote eram requerimentos para o projeto.

Como eu tinha realizado uma instalação inicial com brew, eu preferi fazer a remoção das versões mais recentes, utilizei os seguintes comandos.

brew cleanup -n
brew uninstall elixir --force
brew uninstall erlang --force

Lembrando que o Elixir depende do ERLang, então remova eles na sequência correta, caso contrário o sistema vai berrar por conflito de dependências.

No final bastou carregar as dependências do projeto e pronto…

# starts elixir console 
iex -S mix 
CTRL + C 

# needed to load dependencies 
iex -S mix get.deps 
CTRL + C 

# finally loading the app environment 
ies -S mix 

Uma dica! Observe sempre os comentários deixados no terminal durante a instalação do packs ou plugins, as vezes algo não funciona de primeira por que não observamos os detalhes nas entrelinhas!

ASDF O Gerenciador de Pacotes com Controle de Versões

# make sure your brew is fully updated
brew update
brew upgrade

# install asdf pack manager using brew of course
brew install asdf

# see lastest comments after installation, asdf path will be shown over there
# asdf path may vary depending on your environment

# add asdf path to your shell environment, this is for .zsh
echo -e '\n. /usr/local/opt/asdf/libexec/asdf.sh' >> ~/.zshrc
echo -e '\n. /usr/local/share/zsh/site-functions/_asdf' >> ~/.zshrc

# add path to your shell environment, this is for .bash
echo -e '\n. /usr/local/opt/asdf/libexec/asdf.sh' >> ~/.bash_profile
echo -e '\n. /usr/local/share/zsh/site-functions/_asdf' >> ~/.bash_profile

# reload your shell environment or open a new terminal, your shell will be loaded correctly
source ~/.zshrc
source ~/.bash_profile

# that's it, now check asdf version installed
asdf --version

# check plugins installed, this command will show data after plugins installation
asdf list

# check current packages installed, this command will show data after setting a pack version
asdf current

Esta semana eu precisei atualizar alguns pacotes no meu MacBook, mas desta vez houve um requisito de utilizar uma versão específica do Elixir e ERLang. Foi aí que descobri que o amplamente difundido “brew” não suportava um gerenciamento de versões eficiente, praticamente o brew instala a “latest version” dos pacotes e pronto.

Percorri muitos artigos na web onde a maioria deles indicava o uso do “asdf” para um gerenciamento efetivo de versões. ASDF? What the hack is that?

Para quem, assim como eu, não era familiar a este gerenciador de pacotes, apenas pense nele como sendo um outro brew da vida, mas que tem as opções de escolher a versão que você deseja instalar.

Mais que isso, múltiplas versões dos pacotes podem ser baixadas e você pode fazer a troca de uma versão para outra sob demanda. Isso é muito comum para quem trabalha com múltiplos projetos onde versões específicas são requeridas em cada projeto.

No final das contas foi muito fácil instalar o gerenciador de pacotes asdf, basta seguir a receita do bolo.