如何设置 GOPRIVATE 环境变量

Posted

技术标签:

【中文标题】如何设置 GOPRIVATE 环境变量【英文标题】:How to set GOPRIVATE environment variable 【发布时间】:2020-02-06 21:00:00 【问题描述】:

我开始从事 Go 项目,它使用来自 Github 私有 repos 的一些私有模块,每当我尝试运行 go run main.go 时,它都会给我下面的 410 Gone 错误:

验证 github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod: github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod: 阅读https://sum.golang.org/lookup/github.com/!repoURL/go-proto@v2.86.0+incompatible: 410走了

我可以轻松地从终端克隆私人仓库,这意味着我的 ssh 密钥配置正确。我读到here 我需要设置GOPRIVATE 环境变量,但我不知道该怎么做。

任何人都可以回答或指向相关教程吗?

Go: v1.13,操作系统: macOS Mojave

【问题讨论】:

有一个 go helpgo help module-private 或者只是为了让生活更轻松,export GOPRIVATE=* 这是一个很好的问题。 我想问如何在导出 GOPRIVATE 时添加多个路径。我试过export GOPRIVATE="github.com/repo01;gitlab.com/repo02" 但没有用。但是,在查看了@Jay 的评论后,我尝试了export GOPRIVATE=*,它就可以正常工作????顺便说一句,我认为现在的 go 帮助正在转移到 go help private @PikoMonde 是的,可以,或者使用逗号作为分隔符。 【参考方案1】:

简答:

go env -w GOPRIVATE=github.com/repoURL/private-repo

如果您想允许来自您的组织的所有私有存储库

go env -w GOPRIVATE=github.com/<OrgNameHere>/*

长答案:

查看"Module configuration for non-public modules"了解更多信息:

GOPRIVATE 环境变量控制 go 命令认为哪些模块是私有的(不能公开使用),因此不应使用代理或校验和数据库。该变量是以逗号分隔的模块路径前缀的 glob 模式列表(在 Go 的 path.Match 的语法中)。例如,

 GOPRIVATE=*.corp.example.com,rsc.io/private

使 go 命令将路径前缀匹配任一模式的任何模块视为私有模块,包括 git.corp.example.com/xyzzy、rsc.io/private 和 rsc.io/private/quux。

。 .

“go env -w”命令(参见“go help env”)可用于为将来的 go 命令调用设置这些变量。


ssh使用注意事项:

如果您使用 ssh 访问 git repo(本地托管),您可能需要将以下内容添加到您的 ~/.gitconfig

[url "ssh://git@git.local.intranet/"]
       insteadOf = https://git.local.intranet/

go 命令能够访问 git 服务器。

【讨论】:

谢谢!现在工作,所以诀窍是使用通配符 url 和组织名称。 go env -w GOPRIVATE=github.com/OrgNameHere/* 对于主要使用私人代码export GOPRIVATE=*进行编码的人来说可能更容易 使用 export GOPRIVATE=* 会将当前目录中的所有文件名分配给 GOPRIVATE,这不是您想要的。 这是一个很好的答案。谢谢你的回答。我喜欢这个答案。 我现在仍然喜欢这个答案,并且可能会继续喜欢它很长一段时间。也许几年。【参考方案2】:

只是对 ssh 用法的跟进,这是用于使其工作的命令:

GitHub:

git config --global url."git@github.com:".insteadOf "https://github.com/"

比特桶:

git config --global url."git@bitbucket.org:".insteadOf "https://bitbucket.org/"

【讨论】:

以上是关于如何设置 GOPRIVATE 环境变量的主要内容,如果未能解决你的问题,请参考以下文章

在Postman中如何设置环境变量?

如何设置PATH环境变量

如何设置PATH环境变量

Windows如何设置环境变量

如何设置系统环境变量?

windows10如何设置环境变量