老哥们,问一个 Golang Go语言中 go build 代理的问题

我现在有一台 vmware centos7 服务器。使用 yum 安装了 golang

并且在/etc/profiles 设置了 http_proxy 和 https_proxy 代理

/etc/profiles 设置的内容如下:

export http_proxy=http://192.168.230.1:808
export https_proxy=https://192.168.230.1:808

但是当我使用 go build xxx.go 的时,就会报错, go env 设置如下:

[root[@localhost](/user/localhost) tz-monitor]# go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/root/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/root/go"
GOPRIVATE=""
GOPROXY="https://goproxy.io,direct"
GOROOT="/usr/lib/golang"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.19.10"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/golang/tz-monitor/go.mod"
GOWORK=""
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 -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build1417382532=/tmp/go-build -gno-record-gcc-switches"

使用 go build 时

[root[@localhost](/user/localhost) tz-monitor]# go build main.go 
go: downloading github.com/shirou/gopsutil/v3 v3.23.8
main.go:6:2: github.com/shirou/gopsutil/[email protected]: Get "https://goproxy.io/github.com/shirou/gopsutil/v3/@v/v3.23.8.zip": proxyconnect tcp: EOF

我看网上 go build 设置代理的意思好像是,访问国内的镜像,而非真正的代理。

我也尝试过,直接在有网的机器把v3.23.8.zip 传到这台没网的机器 然后使用 go build。然而毫无卵用

老哥们 ,我这个怎么搞


老哥们,问一个 Golang Go语言中 go build 代理的问题

更多关于老哥们,问一个 Golang Go语言中 go build 代理的问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html

10 回复

https://goproxy.cn/


使用如下命令添加模块代理:

<br>go env -w GO111MODULE=on<br>go env -w GOPROXY=<a target="_blank" href="https://goproxy.cn" rel="nofollow noopener">https://goproxy.cn</a>,direct<br>

更多关于老哥们,问一个 Golang Go语言中 go build 代理的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html




[rootlocalhost tz-monitor]# go env -w GO111MODULE=on
[rootlocalhost tz-monitor]# go env -w GOPROXY=https://goproxy.cn,direct
[rootlocalhost tz-monitor]# go build main.go
go: downloading github.com/shirou/gopsutil/v3 v3.23.8
main.go:6:2: github.com/shirou/gopsutil/[email protected]: Get “https://goproxy.cn/github.com/shirou/gopsutil/v3/v/v3.23.8.zip”: proxyconnect tcp: EOF

#2 还是是代理问题吧,为什么要设置 http_proxy https_proxy 代理 ?

先 unset http_proxy https_proxy 重置掉代理,然后使用 go env -w GOPROXY=https://goproxy.cn,direct 试试。

另外你的 https_proxy 设置得有问题,不应该设置为 https 代理。

export http_proxy=http://192.168.230.1:808
export https_proxy=http://192.168.230.1:808
export all_proxy=socks5://192.168.230.1:808

我在这里也找到了类似问题,可以了解一下具体原因。

https://github.com/goproxy/goproxy.cn/issues/71#issuecomment-599986830

一定要用 http_proxy 吗?都用 goproxy 了。如果没必要,可以 http_proxy="" go build 看看?

没网就 go mod vendor 呗

感谢。非常好用

老哥们,关于Golang中go build命令使用代理的问题,这里有一些关键点分享给大家。

在Go语言的构建过程中,go build命令会从远程仓库下载依赖包。为了加速这一过程,特别是在国内网络环境下,使用代理是非常有必要的。

Go语言官方提供了一个环境变量GOPROXY,用于设置代理。你可以通过设置这个环境变量来指定一个或多个代理地址。例如,你可以将GOPROXY设置为https://goproxy.cn,direct,这样Go构建工具会首先尝试从goproxy.cn这个代理下载依赖,如果失败则直接连接官方仓库。

设置GOPROXY的方法有多种,你可以直接在命令行中临时设置,如export GOPROXY=https://goproxy.cn,direct(在Windows上是set GOPROXY=https://goproxy.cn,direct),也可以在你的shell配置文件中(如.bashrc.zshrc等)永久设置。

此外,一些IDE(如VSCode)和构建工具(如Jenkins)也允许你在它们的配置中设置GOPROXY

需要注意的是,虽然使用代理可以加速依赖下载,但也要确保代理的可靠性和安全性。选择知名的、维护良好的代理服务可以最大程度地降低风险。

希望这些信息对大家有所帮助,如果你在使用go build和代理时遇到任何问题,欢迎随时提问。

回到顶部