gpt4 book ai didi

go - 构建期间的模块依赖缓存问题

转载 作者:IT王子 更新时间:2023-10-29 01:46:40 26 4
gpt4 key购买 nike

最近切换到使用 Go 1.11 版本,并且正在尝试将我们的项目转换为使用新的模块系统。但是,我在缓存系统方面遇到了一个令人沮丧的问题(到目前为止,由于过去不相关的问题,我一直使用 GOCACHE=off 运行,但这不是模块的选项)。

下面的命令日志是基于使用 Homebrew 对我的系统进行全新升级转到 1.11(我通常使用 gvm 来安装和管理 Go 版本,但为此切换到系统构建以查看 gvm 是否是问题所在)。我将我的 GOPATH 设置为一个临时目录,并将源代码从默认的 GOPATH 中移出(它目前位于 ~/gotemp/statsbot)。

对于此命令日志,我首先对缓存进行核对,以使其处于全新状态。然后我正在构建(以引入任何缺失的依赖项,这也应该重新缓存 deps),然后对其中一个子目录进行测试。

[08:34:48] statsbot (feature/bot-rebuild-gomod) $ rm -rf on

[08:34:49] statsbot (feature/bot-rebuild-gomod) $ go clean --cache

[08:34:50] statsbot (feature/bot-rebuild-gomod) $ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="on"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/var/folders/ck/bf8_n8hn34j7bh7hqqppxrtm0000gn/T/tmp.3ga5Iq09"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/Cellar/go/1.11/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.11/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/kaedys/gotemp/statsbot/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/ck/bf8_n8hn34j7bh7hqqppxrtm0000gn/T/go-build065167780=/tmp/go-build -gno-record-gcc-switches -fno-common"

[08:34:53] statsbot (feature/bot-rebuild-gomod) $ go build .

[08:35:01] statsbot (feature/bot-rebuild-gomod) $ ginkgo stats
Failed to compile stats:

# golang.org/x/text/runes
/var/folders/ck/bf8_n8hn34j7bh7hqqppxrtm0000gn/T/tmp.3ga5Iq09/pkg/mod/golang.org/x/text@v0.3.0/runes/cond.go:10:2: can't open import: "golang.org/x/text/transform": open on/51/51b9b2cf5a27a7ff06942814ad6ef031de64dc6d773c835916067578ea1ae3a1-d: no such file or directory
# golang.org/x/text/encoding
/var/folders/ck/bf8_n8hn34j7bh7hqqppxrtm0000gn/T/tmp.3ga5Iq09/pkg/mod/golang.org/x/text@v0.3.0/encoding/encoding.go:19:2: can't open import: "golang.org/x/text/encoding/internal/identifier": open on/4c/4c2fad64312f6ec34b38755ccecb96bb31c6995211f39e0eb4112abc2fac560c-d: no such file or directory
# gopkg.in/fsnotify.v1
/var/folders/ck/bf8_n8hn34j7bh7hqqppxrtm0000gn/T/tmp.3ga5Iq09/pkg/mod/gopkg.in/fsnotify.v1@v1.4.7/kqueue.go:18:2: can't open import: "golang.org/x/sys/unix": open on/77/77790588f9aed90a52efdb1dac069953e1ea2bf82db8627a47a9492862b39c6e-d: no such file or directory

Ginkgo ran 1 suite in 4.123499564s
Test Suite Failed

我在许多构建情况下都看到了同样的错误消息。 go build . 通常 会成功,但有时会失败并显示类似的消息。运行 go clean --cache 始终可以解决这些问题,但我真的不想在每次构建之前运行它,并且在尝试使用 Ginkgo 时它不起作用进行测试,因为这似乎涉及多个连续的编译。

错误本身令人费解,因为这些文件确实存在:

[08:40:49] statsbot (feature/bot-rebuild-gomod) $ ll on/4c
total 112
-rw-r--r-- 1 kaedys staff 18346 Sep 14 08:40:19 2018 4c1d5db302dff0381c402160d7fd2bd89a6dafd3edc61b3dbd5e8f1a85108fb7-d
-rw-r--r-- 1 kaedys staff 27980 Sep 14 08:40:45 2018 4c2fad64312f6ec34b38755ccecb96bb31c6995211f39e0eb4112abc2fac560c-d
-rw-r--r-- 1 kaedys staff 175 Sep 14 08:40:20 2018 4cbbc40c46eba0ef41f3ebd23470c3327215fa6e05e269c276c6635da79f2e8e-a
-rw-r--r-- 1 kaedys staff 13 Sep 14 08:40:20 2018 4cffcbd4a7f1255ca3696f5e24e0b1045d14c25f1f90cbbb077b5d6f2d11e68c-d

ll 中的第二个文件是第二条错误消息所提示的文件丢失的文件,因此我只能假设它在文件仍在生成时尝试访问该文件,或者它正在寻找不同的目录(这很难说,因为错误消息只报告文件的相对路径)。

在 Go 的 github 上创建官方问题之前,在这里发帖看看是否有人知道如何解决这个问题,或者在我的环境设置中是否有问题。

最佳答案

您的 GOCACHE 环境变量设置为 "on"GOCACHE 的值必须是一个文件夹,特殊的"off" 值表示不缓存构建和测试结果并且不使用那些已经缓存的数据。 "on" 没有特殊值。

您不必设置 GOCACHE,因为它有一个默认值。引自 Command Go: Build and test caching:

The go command caches build outputs for reuse in future builds. The default location for cache data is a subdirectory named go-build in the standard user cache directory for the current operating system. Setting the GOCACHE environment variable overrides this default, and running 'go env GOCACHE' prints the current cache directory. You can set the variable to 'off' to disable the cache.

关于go - 构建期间的模块依赖缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55590941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com