我有一个项目正在使用go mod
,CGO
它有一个相对较大的依赖树。
本地构建 ( GOOS=linux
, GOARCH=amd64
) 工作正常。arm
使用我的自定义构建容器(包括几个架构,go get
包括
使用相同的构建映像在本地构建arm
(我需要使用容器,因为CGO
和相应的依赖于架构的 C 工具链)现在给我以下错误(许多示例中的一个):
go: downloading github.com/go-co-op/gocron v1.9.0
scheduler/scheduler.go:7:2: github.com/go-co-op/gocron@v1.9.0: Get "https://goproxy.io/github.com/go-co-op/gocron/@v/v1.9.0.zip": net/http: TLS handshake timeout
但是,我可以看到 (with btop
) 在此错误之前qemu-arm
非常忙 (800 CPU%) 正在运行go
相关的构建任务(实际上是一个go mod tidy
进程)。
我的猜测是,这是因为没有找到适合arm
特定模块的二进制文件,所以它只会即时构建它们。
所以我怀疑从源代码构建的各个模块的时间被算作go get
正常的“从 http 获取”,这会导致观察到的超时。
因此,这意味着如果我能够增加 的超时值,我就可以解决问题go get
,但我还没有找到任何相关信息。
有任何想法吗?