老哥们,问一个 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
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
先 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
和代理时遇到任何问题,欢迎随时提问。