环境变量

未匹配的标注

go命令中的模块行为可以使用下面列出的环境变量进行配置。这个列表只包括与模块相关的环境变量。参见go help environment,以获得go命令识别的所有环境变量的列表。

变量 说明
GO111MODULE 控制go命令是否在模块感知模式或GOPATH模式下运行。识别三个值:- off: go命令忽略go.mod文件,以GOPATH模式运行。- on (或unset): go命令以模块感知模式运行,即使没有go.mod文件存在。- auto: 如果当前目录或任何父目录中有go.mod文件,go命令以模块感知模式运行。在Go 1.15及以下版本中,这是默认的。更多信息请参见Module感知命令
GOMODCACHE go命令将存储下载的模块和相关文件的目录。有关该目录结构的详情,请参见Module cache。如果没有设置GOMODCACHE,它默认为$GOPATH/pkg/mod
GOINSECURE 逗号分隔的模块路径前缀的glob模式列表(采用Go的path.Match的语法),可能总是以不安全的方式被获取。只适用于直接获取的依赖关系。与go get上的-insecure标志不同,GOINSECURE不会禁用模块校验数据库的验证。 GOPRIVATEGONOSUMDB可以用来实现这一点。
GONOPROXY 逗号分隔的模块路径前缀glob模式列表(采用Go的path.Match的语法),应该总是直接从版本控制库中获取,而不是从模块代理中获取。如果GONOPROXY没有设置,默认为GOPRIVATE。参见隐私
GONOSUMDB 逗号分隔的模块路径前缀glob模式列表(采用Go的path.Match的语法),go不应该使用校验数据库进行校验。如果GONOSUMDB没有设置,默认为GOPRIVATE。参见Privacy
GOPATH GOPATH模式下,GOPATH变量是一个可能包含Go代码的目录列表。在模块感知模式下,模块缓存存储在第一个GOPATH目录的pkg/mod子目录下。缓存之外的模块源代码可以存储在任何目录中。如果GOPATH没有设置,它默认为用户主目录的go子目录。
GOPRIVATE 逗号分隔的模块路径前缀的glob模式列表(采用Go的path.Match的语法),应被视为私有。 GOPRIVATEGONOPROXYGONOSUMDB的默认值。参见隐私。 GOPRIVATE也决定了一个模块是否被视为GOVCS的隐私。
GOPROXY 模块代理URL的列表,用逗号或管道分隔。当go命令查找一个模块的信息时,它会依次联系列表中的每个代理,直到收到成功的响应或终端错误。一个代理可能会以404(未找到)或410(消失)的状态来表示该模块在该服务器上不可用。go命令的错误回退行为由URL之间的分隔符决定。如果一个代理URL后面是逗号,go命令在404或410错误后回退到下一个URL;所有其他错误被认为是终端。如果代理URL后面是一个管道,go命令在任何错误后都会返回到下一个源,包括非HTTP错误,如超时。GOPROXYURL可以有httpshttp,或file方案。如果一个URL没有方案,则假定为https。模块缓存可以直接用作文件代理::GOPROXY=file://$(go env GOMODCACHE)/cache/download两个关键字可以用来代替代理URL:- off: 不允许从任何来源下载模块。- direct: 直接从版本控制库下载而不是使用模块代理。GOPROXY默认为https://proxy.golang.org,direct。在这种配置下,go命令首先联系Google运行的Go模块镜像,如果镜像没有该模块,则退回到直接连接。镜像的隐私政策见proxy.golang.org/privacy。可以设置GOPRIVATEGONOPROXY环境变量,以防止使用代理下载特定模块。参见隐私了解私人代理配置的信息。参见Module代理将软件包解析为模块了解更多关于如何使用代理的信息。
GOSUMDB 确定要使用的校验数据库的名称,也可以选择其公钥和URL。例如:GOSUMDB=「sum.golang.org」 GOSUMDB=「sum.golang.org+<publickey>」 GOSUMDB=「sum.golang.org+<publickey> https://sum.golang.org」 go命令知道sum.golang.org的公钥,并且知道 "sum.golang.google.cn"(在中国大陆可用)连接到 "sum.golang.org "数据库;使用任何其他数据库都需要明确给出公钥。URL默认为https://,后面是数据库名称。GOSUMDB默认为sum.golang.org,由Google运行的Go校验数据库。如果GOSUMDB'被设置为off',或者go get'被调用为insecure'标志,则不查询校验数据库,所有未识别的模块都被接受,代价是放弃了所有模块的可重复下载的安全保证。绕过特定模块的校验数据库的更好方法是使用 "GOPRIVATE "或 "GONOSUMDB "环境变量。更多信息见Authenticating modulesPrivacy
GOVCS 如果没有设置GOVCS,或者某个模块不符合GOVCS中的任何模式,go命令可以使用githg来下载公共和私有模块(根据其路径是否符合GOPRIVATE中的模式来定义)或其他符合 glob 模式的模块。具体来说,go命令的作用就像GOVCS被设置为:public:git or hg,private更多参见 Controlling版本控制工具GOVCS 获得完整的解释。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/go-mod/1.17/env...

译文地址:https://learnku.com/docs/go-mod/1.17/env...

上一篇 下一篇
贡献者:3
讨论数量: 0
发起讨论 只看当前版本


暂无话题~