环境变量
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 不会禁用模块校验数据库的验证。 GOPRIVATE 或 GONOSUMDB 可以用来实现这一点。 |
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 的语法),应被视为私有。 GOPRIVATE 是 GONOPROXY 和 GONOSUMDB 的默认值。参见隐私。 GOPRIVATE 也决定了一个模块是否被视为 GOVCS 的隐私。 |
GOPROXY |
模块代理 URL 的列表,用逗号或管道分隔。当 go 命令查找一个模块的信息时,它会依次联系列表中的每个代理,直到收到成功的响应或终端错误。一个代理可能会以 404(未找到)或 410(消失)的状态来表示该模块在该服务器上不可用。go 命令的错误回退行为由 URL 之间的分隔符决定。如果一个代理 URL 后面是逗号,go 命令在 404 或 410 错误后回退到下一个 URL;所有其他错误被认为是终端。如果代理 URL 后面是一个管道,go 命令在任何错误后都会返回到下一个源,包括非 HTTP 错误,如超时。GOPROXY URL 可以有 https ,http ,或 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。可以设置 GOPRIVATE 和 GONOPROXY 环境变量,以防止使用代理下载特定模块。参见隐私了解私人代理配置的信息。参见 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 modules 和 Privacy。 |
GOVCS |
如果没有设置 GOVCS ,或者某个模块不符合 GOVCS 中的任何模式,go 命令可以使用 git 和 hg 来下载公共和私有模块(根据其路径是否符合 GOPRIVATE 中的模式来定义)或其他符合 glob 模式的模块。具体来说,go 命令的作用就像 GOVCS 被设置为:public:git or hg,private 更多参见 Controlling 版本控制工具 GOVCS 获得完整的解释。 |
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。