Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

问题:设置了GOPROXY还是出现i/o timeout #93

Closed
hzjnet opened this issue Jun 28, 2020 · 22 comments
Closed

问题:设置了GOPROXY还是出现i/o timeout #93

hzjnet opened this issue Jun 28, 2020 · 22 comments

Comments

@hzjnet
Copy link

hzjnet commented Jun 28, 2020

环境情况:
1 go env :
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/aajnet/.cache/go-build"
GOENV="/home/aajnet/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/aajnet/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct"
GOROOT="/usr/lib/golang"
GOSUMDB="off"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
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 -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build077723499=/tmp/go-build -gno-record-gcc-switches"

2 版本
OS:
lsb_release -ra
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.8.2003 (Core)
Release: 7.8.2003
Codename: Core

go version
go version go1.13.11 linux/amd64

3 设置:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

4 问题参考:#29

我的问题:
经过以上设置和检查还是出现:
Get "https://proxy.golang.org/github.com/dgryski/go-metro/@v/v0.0.0-20180109044635-280f6062b5bc.mod": dial tcp 34.64.4.113:443: i/o timeout

求:如何处理?

@aofei
Copy link
Member

aofei commented Jun 28, 2020

你好,麻烦确认两点内容:

  1. 你所贴的 go env 内容和你执行的 go get 等命令所处的环境一致,比如 go env 内容是终端环境,那么 go get 等命令就不能在 GoLand 等 IDE 环境中执行,因为 GoLand 之类的 IDE 会覆盖系统环境变量
  2. 你执行 go get 等命令时所用的用户是 aajnet,比如你不能执行 sudo go get,因为 sudo 命令会把执行用户更换为 root,更换后就会采用 root 用户的环境变量,而你目前贴出的内容均是 aajnet 用户的

@hzjnet
Copy link
Author

hzjnet commented Jun 28, 2020

你好,麻烦确认两点内容:

  1. 你所贴的 go env 内容和你执行的 go get 等命令所处的环境一致,比如 go env 内容是终端环境,那么 go get 等命令就不能在 GoLand 等 IDE 环境中执行,因为 GoLand 之类的 IDE 会覆盖系统环境变量
  2. 你执行 go get 等命令时所用的用户是 aajnet,比如你不能执行 sudo go get,因为 sudo 命令会把执行用户更换为 root,更换后就会采用 root 用户的环境变量,而你目前贴出的内容均是 aajnet 用户的

首先谢谢回复,如上1-2情况如下
1 都是在aajnet用户下命令行执行,终端环境一致,不需要其它用户或者环境
2 没有使用sudo

@aofei
Copy link
Member

aofei commented Jun 28, 2020

麻烦试下这条命令,看一下能否正常输出:

$ GO111MODULE=on GOPROXY=https://goproxy.cn,direct go list -m -json -versions golang.org/x/text@latest

@hzjnet
Copy link
Author

hzjnet commented Jun 28, 2020

GO111MODULE=on GOPROXY=https://goproxy.cn,direct go list -m -json -versions golang.org/x/text@latest

GO111MODULE=on GOPROXY=https://goproxy.cn,direct go list -m -json -versions golang.org/x/text@latest
go: finding golang.org/x/text v0.3.3
{
"Path": "golang.org/x/text",
"Version": "v0.3.3",
"Versions": [
"v0.1.0",
"v0.2.0",
"v0.3.0",
"v0.3.1",
"v0.3.2",
"v0.3.3"
],
"Time": "2020-06-16T18:28:43Z"
}

@aofei
Copy link
Member

aofei commented Jun 28, 2020

这个输出结果表明你的网络是正常的,所以你的配置环境和执行环境可能还是有些问题。

请问你是在哪里执行什么命令时才看到的那句 i/o timeout

@hzjnet
Copy link
Author

hzjnet commented Jun 28, 2020

我是编译openwrt,其中包含go语言源码的应用如:frps\v2ray\NeteaseMusic等出现该问题,完整一点的log如下:
v2ray.com/core.build=Lean v2ray.com/core.codename=OpenWrt; do pkg_ldflags="$pkg_ldflags -X $def" ; done ; go install ${installsuffix:+-installsuffix $installsuffix} -trimpath -ldflags "all=$ldflags" -v ${pkg_gcflags:+-gcflags "$pkg_gcflags"} ${pkg_ldflags:+-ldflags "$pkg_ldflags $ldflags"} $targets ; retval=$? ; echo ; if [ "$retval" -eq 0 ] && [ -z "$(find /openwrt/openwrt-lede-cools-v20.6.18d200625/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/v2ray-core-4.25.0/.go_work/build/bin/linux_arm -maxdepth 0 -type d ! -empty 2>/dev/null)" ]; then echo "No binaries were generated, consider adding GO_PKG_SOURCE_ONLY:=1 to Makefile" ; echo ; fi ; echo "Cleaning module download cache (golang/go#27455)" ; go clean -modcache ; echo ; fi ; exit $retval ; )
Finding targets
go: github.com/dgryski/[email protected]: Get "https://proxy.golang.org/github.com/dgryski/go-metro/@v/v0.0.0-20180109044635-280f6062b5bc.mod": dial tcp 216.58.200.241:443: i/o timeout

Building targets
go: github.com/dgryski/[email protected]: Get "https://proxy.golang.org/github.com/dgryski/go-metro/@v/v0.0.0-20180109044635-280f6062b5bc.mod": dial tcp 216.58.200.241:443: i/o timeout

Cleaning module download cache (golang/go#27455)

make[3]: *** [/openwrt/openwrt-lede-cools-v20.6.18d200625/build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/v2ray-core-4.25.0/.built] Error 1
make[3]: Leaving directory `/openwrt/openwrt-lede-cools-v20.6.18d200625/package/lean/v2ray'

@aofei
Copy link
Member

aofei commented Jun 28, 2020

那你需要深入挖掘一下编译过程了,看看有没有涉及环境变量的覆盖或者用户身份的切换等行为,因为你的超时结果表明了当时所用的 GOPROXY 环境变量并不是你所设置的。

请问你编译时有添加 sudo 命令吗?如果有的话,后续所有的操作都会在 root 用户下完成的,包括 go get 等。

@hzjnet
Copy link
Author

hzjnet commented Jun 28, 2020

那你需要深入挖掘一下编译过程了,看看有没有涉及环境变量的覆盖或者用户身份的切换等行为,因为你的超时结果表明了当时所用的 GOPROXY 环境变量并不是你所设置的。

请问你编译时有添加 sudo 命令吗?如果有的话,后续所有的操作都会在 root 用户下完成的,包括 go get 等。

喔,谢谢! 确定中间没有使用sudo,搞不懂了!

@aofei
Copy link
Member

aofei commented Jun 28, 2020

要不你换一种设置环境变量的方式吧,比如在 .bashrc 中添加,或者在编译命令前临时添加,记得要同时设置 GO111MODULE=onGOPROXY=https://goproxy.cn,direct

@hzjnet
Copy link
Author

hzjnet commented Jun 28, 2020

要不你换一种设置环境变量的方式吧,比如在 .bashrc 中添加,或者在编译命令前临时添加,记得要同时设置 GO111MODULE=onGOPROXY=https://goproxy.cn,direct

嗯,不过已经这样尝试过了!
确实哈: 一个是go代理 ,一个是OS环境env ,正常了.可以关闭了。

谢谢!

@aofei
Copy link
Member

aofei commented Jul 1, 2020

由于问题得到了解决,所以这个 Issue 我就关闭了哈,如果还有其他问题欢迎随时提问~

@LeeYearJ
Copy link

LeeYearJ commented Sep 1, 2020

PS E:\Go_Path\src\github.com\grafana> go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\Administrator\AppData\Local\go-build
set GOENV=C:\Users\Administrator\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=E:\Go_Path
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=F:\Go
set GOSUMDB=off
set GOTMPDIR=
set GOTOOLDIR=F:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=E:\Go_Path\src\github.com\grafana\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\ADMINI~1\AppData\Local\Temp\go-build428437666=/tmp/go-build -gno-record-gcc-switches

===设置了goproxy,但是在执行docker build -t xxx 进行到RUN go mod verify 这步报错:
go: github.com/BurntSushi/[email protected]: Get https://proxy.golang.org/github.com/%21burnt%21sushi/toml/@v/v0.3.1.mod: dial tcp 34.64.4.113:443: i/o timeout
==这个是因为我设置的goproxy没起作用吗?
@aofei 麻烦有空的话,帮忙看下,谢谢。

@aofei
Copy link
Member

aofei commented Sep 1, 2020

@LeeYearJ

Docker 内需要再单独设置环境变量的,请问你设置了吗?

@LeeYearJ
Copy link

LeeYearJ commented Sep 1, 2020

在使用docker通过dockerfile创建镜像的时候也要设置环境变量吗?

@aofei
Copy link
Member

aofei commented Sep 1, 2020

@LeeYearJ

是的,Docker 容器内部的环境是完全独立于宿主系统的。

@LeeYearJ
Copy link

LeeYearJ commented Sep 1, 2020

好的,谢谢解答,我去设置下看看。

@Tristan-now
Copy link

由于问题得到了解决,所以这个 Issue 我就关闭了哈,如果还有其他问题欢迎随时提问~

你好,我也遇到了相似的问题,即GOLAND的goproxy和用户以及root三者不一致,目前我想知道root下的goenv如何永久修改,每次的修改只能是在终端单次生效,找不到root下goenv合适的设置文件

@aofei
Copy link
Member

aofei commented Nov 1, 2023

目前我想知道root下的goenv如何永久修改,每次的修改只能是在终端单次生效,找不到root下goenv合适的设置文件

@3481554467 切换到 root 用户后执行 go env -w GOPROXY=https://goproxy.cn,direct 或者 echo "export GOPROXY=https://goproxy.cn,direct" >> ~/.profile 都行。

@JoyceWang-zk
Copy link

@aofei

麻烦试下这条命令,看一下能否正常输出:

$ GO111MODULE=on GOPROXY=https://goproxy.cn,direct go list -m -json -versions golang.org/x/text@latest

@aofei 我也遇到了这个问题,试了这条命令在之后,依然是timeout.

@hahahashen
Copy link

你好,我在WSL上也遇到了这个问题
我WSL的系统是ubuntu2204
image
我GO111MODULE=on GOPROXY=https://goproxy.cn,direct go list -m -json -versions golang.org/x/text@latestzhe't这条命令是可以正常输出的

@aofei
Copy link
Member

aofei commented Apr 12, 2024

你好,我在WSL上也遇到了这个问题 我WSL的系统是ubuntu2204 image 我GO111MODULE=on GOPROXY=https://goproxy.cn,direct go list -m -json -versions golang.org/x/text@latestzhe't这条命令是可以正常输出的

注意看,你少打了个 Y

@zhaobaizhou
Copy link

您好,我尝试设置了 goproxy.cn,但是还是报错 timeout,请帮我看看,感谢🙏

GO111MODULE=on GOPROXY=https://goproxy.cn,direct go list -m -json -versions golang.org/x/text@latest
运行这个输出如下:

image

我是运行 brew upgrade hugo 的时候遇到的问题,已经试了好久,没有办法继续,错误信息如下:

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants