Go Modules
  • Boas-vindas
  • Básico
    • O que é um módulo?
    • Rotina usando módulos
      • Criando um novo módulo
      • Adicionando uma dependência
      • Atualizando dependências
      • Adicionando uma dependência em uma nova versão principal (major)
    • Comandos comuns
  • Novos conceitos
    • Módulos
    • go.mod
    • Seleção de versão
  • Avançado
    • Go Module Proxy
    • go.sum
    • Checksum Database
  • Tutoriais
    • Como usar libs privadas?
    • Como usar libs privadas no Github Actions?
  • FAQ
    • Devo fazer commit do arquivo 'go.sum'?
    • Quando usar replace?
    • Posso trabalhar totalmente sem um versionador de código em meu sistema de arquivos local?
    • Como faço para usar a "vendor" com módulos?
    • Que ferramentas posso usar para trabalhar com módulos?
    • Devo adicionar um arquivo 'go.mod' mesmo que eu não tenha nenhuma dependência?
  • Releases
    • 1.13
    • 1.14
    • 1.15
Powered by GitBook
On this page
  • Go Module Proxy
  • O que é um Go Proxy?
  • Para que serve o proxy?
  • Configurando o proxy
  • Mais informações
  1. Avançado

Go Module Proxy

PreviousSeleção de versãoNextgo.sum

Last updated 4 years ago

Go Module Proxy

O provê alguns serviços através do Google, como um mirror para acelerar o download, um banco de dados com checksums para validação do conteúdo dos módulos e um indice para descoberta de novos módulos.

O que é um Go Proxy?

É qualquer servidor que aceite uma requisição GET no padrão esperado. um exemplo seria:

$ GET $GOPROXY/<module>/@v/list

Irá retornar uma lista com as versões conhecidas do modulo, sendo uma por linha, veja aqui um exemplo:

mod

Agora um ponto interessante a ser analisado é o .mod da dependência, que pode ser acessado seguindo o padrão:

$ GET $GOPROXY/<module>/@v/<version>.mod

Como, por exemplo:

zip

O download do pacote pode ser feito diretamente através do:

$ GET $GOPROXY/<module>/@v/.zip

Como, por exemplo:

Para que serve o proxy?

Do ponto de vista de uso, o go build irá realizar as operações da sessão anterior automaticamente. Então temos uma situação interessante, o proxy armazena versões de cada pacote, ou seja, se por ventura o pacote original sair do ar, suas dependências não irão quebrar e caso alguém injete código malicioso a versão do proxy não é afetada!

Configurando o proxy

$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct

Em caso de versões anteriores é preciso trabalhar com variáveis de ambiente:

export GO111MODULE="on" export GOPROXY="https://goproxy.cn"

Outro ponto de atenção é caso você tenha a necessidade de utilizar um repositório privado, o go permite o uso da variavel:

go env -w GOPRIVATE="minhaempresa.com"

Mais informações

Mais informações sobre o proxy

go help goproxy

Mais informações sobre as variáveis do go

go help environment

Por padrão o go irá utilizar o repositório , porém é possivel configurar outros repositórios conforme a sua necessidade. Um exemplo seria um desenvolvedor utilizando o proxy chinês, para go 1.13 ou superior:

Go Team
https://proxy.golang.org/rsc.io/quote/@v/list
https://proxy.golang.org/rsc.io/quote/@v/v1.5.1.mod
https://proxy.golang.org/rsc.io/quote/@v/v1.5.1.zip
oficial