go version
)?versão $ go go versão go1.13.3 linux / amd64
sim
go env
)?go env
Saída
$ go env
GO111MODULE = ""
GOARCH = "amd64"
GOBIN = "/ opt / DEVOPS / SDK / golang / go_projects / bin"
GOCACHE = "/ home / alessiosavi / .cache / go-build"
GOENV = "/ home / alessiosavi / .config / go / env"
GOEXE = ""
GOFLAGS = ""
GOHOSTARCH = "amd64"
GOHOSTOS = "linux"
GONOPROXY = ""
GONOSUMDB = ""
GOOS = "linux"
GOPATH = "/ opt / DEVOPS / SDK / golang / go_projects"
GOPRIVATE = ""
GOPROXY = "https: //proxy.golang.org,direct"
GOROOT = "/ opt / DEVOPS / SDK / golang / go"
GOSUMDB = "sum.golang.org"
GOTMPDIR = ""
GOTOOLDIR = "/ opt / DEVOPS / SDK / golang / go / pkg / tool / linux_amd64"
GCCGO = "gccgo"
AR = "ar"
CC = "gcc"
CXX = "g ++"
CGO_ENABLED = "1"
GOMOD = ""
CGO_CFLAGS = "- g -O2"
CGO_CPPFLAGS = ""
CGO_CXXFLAGS = "- g -O2"
CGO_FFLAGS = "- g -O2"
CGO_LDFLAGS = "- g -O2"
PKG_CONFIG = "pkg-config"
GOGCCFLAGS = "- fPIC -m64 -pthread -fmessage-length = 0 -fdebug-prefix-map = / tmp / go-build891034950 = / tmp / go-build -gno-record-gcc-switches"
Estou tentando importar um módulo golang personalizado que não contém nenhuma outra dependência (go.mod contém apenas o module
name e a versão go
). Infelizmente, recebo 410 gone
se tento incluir o módulo em outro projeto.
O módulo pode ser importado com a versão v0.0.8, mas não com> v0.0.9
Devido ao arquivo go.mod, não é possível replicar em play.golang.org
, em vez disso, criei um novo repositório para isso: https://github.com/alessiosavi/test
NOTA: mudar a versão do módulo para v0.0.8, vai funcionar
Espero que importando o módulo em go.mod (requer github.com/alessiosavi/GoGPUtils v0.0.10
) e executando um go clean
, o módulo pode ser usado entre o código
Recebo um erro:
export GO111MODULE=on
export GOPROXY=direct
go get -v -u github.com/alessiosavi/[email protected]
go: downloading github.com/alessiosavi/GoGPUtils v0.0.9
verifying github.com/alessiosavi/[email protected]: github.com/alessiosavi/[email protected]: reading https://sum.golang.org/lookup/github.com/alessiosavi/[email protected]: 410 Gone
Fique de olho em: https://proxy.golang.org/YOUR_MODULE_GITH_URL/@v/VERSION.info
Parece que https://proxy.golang.org/github.com/alessiosavi/!go!g!p!utils/ @ v / v0.0.9.info
No meu caso, parece que o erro está relacionado a dois arquivos que diferem apenas para o caso no nome.
O problema é https://github.com/alessiosavi/GoGPUtils/issues/2.
Para obter uma mensagem de erro mais completa e útil, você deve visitar o URL que retornou 410 na mensagem de erro que você recebeu:
https://sum.golang.org/lookup/github.com/alessiosavi/!go!g!p!utils @ v0.0.9
Diz:
not found: unzip /tmp/gopath/pkg/mod/cache/download/github.com/alessiosavi/!go!g!p!utils/@v/v0.0.9.zip: case-insensitive file name collision: "tests/fileutils/FindMe.txt" and "tests/fileutils/findme.txt"
Ou defina GOSUMDB=off
além de definir GOPROXY=direct
:
$ export GO111MODULE=on
$ export GOPROXY=direct
$ export GOSUMDB=off
$ go get -v -u github.com/alessiosavi/[email protected]
go: finding github.com/alessiosavi/GoGPUtils v0.0.9
go: downloading github.com/alessiosavi/GoGPUtils v0.0.9
go: extracting github.com/alessiosavi/GoGPUtils v0.0.9
-> unzip /var/folders/zb/5p8cwfhj29gf_m8vdy8ylmlr00jwcj/T/tmp.6HERCDpw/pkg/mod/cache/download/github.com/alessiosavi/!go!g!p!utils/@v/v0.0.9.zip: case-insensitive file name collision: "tests/fileutils/FindMe.txt" and "tests/fileutils/findme.txt"
go get github.com/alessiosavi/[email protected]: unzip /var/folders/zb/5p8cwfhj29gf_m8vdy8ylmlr00jwcj/T/tmp.6HERCDpw/pkg/mod/cache/download/github.com/alessiosavi/!go!g!p!utils/@v/v0.0.9.zip: case-insensitive file name collision: "tests/fileutils/FindMe.txt" and "tests/fileutils/findme.txt"
Como sempre, outro dia, outro problema resolvido por @dmitshur. Obrigado pelo esforço (:
Outra versão Go, outra variável ENV para se preocupar e definir nos Dockerfiles 🤣
Essencialmente, como @dmitshur apontou corretamente:
export GOSUMDB=off
Ajudou.
Este tópico me salvou. Obrigada.
As ferramentas Go poderiam realmente usar mensagens de erro um pouco aprimoradas. Fiquei realmente perdido com uma mensagem como a abaixo. Não sei quase nada sobre os novos desenvolvimentos relacionados ao módulo (exceto que louvo a intenção!), E ter mensagens de erro impenetráveis torna realmente difícil a migração.
go: ghe.internalrepo.co.jp/project/[email protected]/go.mod: verifying module: ghe.internalrepo.co.jp/project/[email protected]/go.mod: reading https://sum.golang.org/lookup/ghe.internalrepo.co.jp/project/[email protected]: 410 Gone
server response: not found: ghe.internalrepo.co.jp/project/[email protected]: unrecognized import path "ghe.internalrepo.co.jp/project/our_project": https fetch: Get "https://ghe.internalrepo.co.jp/project/our_project?go-get=1": dial tcp 123.123.123.123:443: connect: connection refused
Ah, para fornecer mais algumas dicas para as pessoas que encontram este tópico: export GOSUMDB=off
ajudou a consertar o problema, mas eu, pelo menos no meu caso, o "adequado" (no sentido de que não afeta como as dependências públicas são acessados) a correção foi definir export GOPRIVATE=ghe.internalrepo.co.jp
. Ainda me deixa perplexo, porém, como ele não tentaria acessar diretamente o repositório depois de falhar com GOSUMDB, mas apenas falharia imediatamente com uma mensagem criptografada. Para desenvolvedores Go: a mensagem parece muito mais enigmática se você não conhece os conceitos, então, por favor, faça um trabalho de UX em torno disso!
Comentários muito úteis
O problema é https://github.com/alessiosavi/GoGPUtils/issues/2.
Para obter uma mensagem de erro mais completa e útil, você deve visitar o URL que retornou 410 na mensagem de erro que você recebeu:
https://sum.golang.org/lookup/github.com/alessiosavi/!go!g!p!utils @ v0.0.9
Diz:
Ou defina
GOSUMDB=off
além de definirGOPROXY=direct
: