如何设置GOPRIVATE环境变量


15

我开始研究一个Go项目,它使用了Github私有存储库中的一些私有模块,每当我尝试运行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密钥配置正确。我在这里读到我需要设置GOPRIVATE环境变量,但是我不确定该怎么做。

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

转到: v1.13,操作系统: macOS Mojave


man $(basename $SHELL)
彼得

1
有一个去帮忙为:go help module-private
索罗什

Answers:


24

简短答案:

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

要么

如果要允许您组织中的所有私人回购

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

长答案:

有关更多信息,请检查“非公共模块的模块配置”

GOPRIVATE环境变量控制go命令认为哪个模块是私有的(不可公开获得),因此不应使用代理或校验和数据库。该变量是模块路径前缀的逗号分隔的全局模式列表(按照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服务器。


1
谢谢!现在可以正常工作,因此诀窍是将通配符url与组织名称一起使用。go env -w GOPRIVATE=github.com/{OrgNameHere}/*
UsamaAmjad '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.