Gvm: Gerenciando versões de GoLang
Se você trabalha com vários projetos Go, já percebeu como é complicado quando os projetos requerem versões diferentes da linguagem.
A fim de resolver esse problema surgiu o projeto chamado GVM (Go Version Manager), onde você pode ter várias versões do Go instalado em sua máquina e quando precisar rodar um projeto em uma versão especifica basta fazer a troca pelo terminal.
Instalação em ambiente Linux
O processo de instalação é bem simples e você pode conferir na documentação oficial.
Resumidamente o comando de instalação é esse:
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
Se você estiver usando zsh apenas mude de bash para zsh.
![]() |
Após a instalação |
No meu caso foi precisa instalar mais um pacote no Ubuntu:
sudo apt-get install bison
Pronto, agora feche seu terminal, abra novamente e execute o seguinte comando para verificar se o GVM foi instalado corretamente:
gvm version
Conhecendo a ferramenta
O primeiro comando e o mais importante é o gvm. Se a sua instalação foi bem sucedida, assim que você digitar esse comando no terminal você irá ver algo parecido com a imagem abaixo:
Dentre essa grande quantidade de comandos disponíveis vou lhe apresentar alguns.
- Comandos básicos
1- Listar versões disponíveis para instalação:
gvm listall
2- Listar versões instaladas em sua máquina:
gvm list
3- Instalar uma versão:
gvm install NUMERO_VERSAO
Exemplo: gvm install go1.15.8
4- Desinstalar uma versão:
nvm uninstall NUMERO_VERSAO
Exemplo: gvm uninstall go1.15.8
5- Usar uma versão já instalada:
gvm use NUMERO_VERSAO
Exemplo: gvm use go1.15.8
6- Definir nome para uma versão já instalada:
gvm alias MEU_NOME NUMERO_VERSAO
Exemplo: gvm alias go15 go1.15.8
Com isso você poderá usar uma versão pelo nome definido e não mais pelo número da versão. Exemplo: gvm use go15
7- Definir uma versão padrão (global) para o sistema operacional:
gvm use NUMERO_VERSAO --default
Exemplo: gvm use go1.15.8 --default
- Usando pkgset GVM
Fora da caixa, Go tem uma maneira brilhante e frustrante de gerenciar pacotes e módulos. Por padrão, se você for buscar um pacote, ele é baixado nos diretórios src e pkg em seu $GOPATH e então ele pode ser incluído no seu programa Go usando importação. Isso facilita ao obter pacotes, especialmente para usuários desprivilegiados, sem exigir privilégios sudo ou raiz (muito parecido com a instalação de pip --usuário em Python). A compensação, no entanto, é a dificuldade em gerenciar diferentes versões dos mesmos pacotes em diferentes projetos.
O GVM realiza elegantemente o gerenciamento e a segregação de pacotes entre projetos usando "pkgsets" para anexar um novo diretório para projetos à $GOPATH padrão para a versão de Go instalada, assim como $PATH funciona em sistemas Unix/Linux.
Veja abaixo os 3 comandos para podermos utilizar essa funcionalidade:
8- Listar os pkgsets criados:
gvm pkgset list
Por padrão o GVM já traz um pkgset criado, que é o global.
9- Criar um pkgset:
Antes de criar o pacote você deve especificar qual a versão do Go, utilizando o comando do item 5.
gvm pkgset create NOME_DO_PACOTE
10- Usar um pkgset já criado:
gvm pkgset use NOME_DO_PACOTE
Note que ao usar esse comando, o GOPATH é alterado para o pacote informado. Veja com o comando echo $GOPATH
11- Remover um pkgset já criado:
gvm pkgset remove NOME_DO_PACOTE
Comentários
Postar um comentário