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

Postagens mais visitadas deste blog

pgAdmin 4: Configurando um server do Postgres

Oh My Zsh: Melhorando a produtividade do seu terminal

Git: Renomear, desfazer, mesclar, editar ou excluir commits