本篇文章为大家展示了如何解决go包管理相关问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1. 下载被墙的包

export GO111MODULE=on
export GOPROXY=https://goproxy.io

轻松解决类似下面的问题: go get golang.org/x/sys: unrecognized import path "golang.org/x/sys" (https fetch: Get https://golang.org/x/sys?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

有些repo我们不希望走代理,比如公司内部repo,需要单独设置: export GOPRIVATE="gitlab.xxx.com" GONOPROXY="gitlab.xxx.com"

export GOPROXY=direct, 关闭。

2. 用ssh协议访问私有仓库

go env -w GOPRIVATE=gitlab.xxx.com

问题: fatal: could not read Username for 'https://gitlab.xxx.com': terminal prompts disabled

办法: git config –add –global url."git@gitlab.xxx.com:".insteadOf https://gitlab.xxx.com

参考: https://erwinvaneyk.nl/private-repositories-with-go-mod/

3 更新go mod

go get -d gitlab.xxx.com/xxx/containerd@80c0ab87fbe6888064cd243aa6a6be77aa7968bf 在go.mod中,在requires里把私有repo删掉,在replace中更新如下: github.com/containerd/containerd v1.4.0 => gitlab.xxx.com/xxx/containerd v0.0.0-20201202101137-80c0ab87fbe6

然后刷新: go mod vendor

4 go mod tidy: checksum mismatch问题

go clean -modcache rm go.sum go mod tidy

5. vndr

containerd项目, 使用如下: vndr github.com/containerd/cri 362dc5e4e008912d93876d0d194ab0bf6a469aa2 git@gitlab.xxx.com:eci-depend/cri.git

6. gosum

背景:https://goproxy.io/zh/docs/GOSUMDB-env.html

错误: go get -d gitlab.xxx.com/yyy/cri@zzz

go: k8s.io/node-problem-detector@v0.0.0-00010101000000-000000000000 requires github.com/euank/go-kmsg-parser@v2.0.1+incompatible: verifying go.mod: github.com/euank/go-kmsg-parser@v2.0.1+incompatible/go.mod: reading https://goproxy.io/sumdb/sum.golang.org/lookup/github.com/euank/go-kmsg-parser@v2.0.1+incompatible: 410 Gone server response: not found: github.com/euank/go-kmsg-parser@v2.0.1+incompatible: invalid version: +incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required

解决: export GOSUMDB=off

上述内容就是如何解决go包管理相关问题,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注云行业资讯频道。