问题描述

由于一些网络环境问题,当我们使用go get 来获取一些依赖包时,常常会出现 connection refused 等问题,下面获取gomega 包的指令为例:

go get -u github.com/onsi/gomega
复制代码

经过等待后,我们会得到如下报错:

go get: module github.com/onsi/gomega: Get "https://proxy.golang.org/github.com/onsi/gomega/@v/list": dial tcp 172.217.27.145:443: connect: connection refused
复制代码

解决方案

设置GOPROXY 环境变量

go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/root/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/root/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.16.5"
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-build525051245=/tmp/go-build -gno-record-gcc-switches"
复制代码
go getgoproxy.io
export GOPROXY=https://goproxy.io,direct
复制代码
go env -w GOPROXY=https://goproxy.io,direct
复制代码

设置系统代理

说到网络问题,那么很自然的就会联想到四个大字——设置代理,上一个方法中,我们是通过为go 自身配置代理来解决网络访问问题的。

我们也可以通过设置系统代理的方式,来解决该问题。

export http_proxy=http://proxyAddress:port
export https_proxy=http://proxyAddress:port
复制代码

最终效果

go get
# go get -u github.com/onsi/gomega
go: downloading github.com/onsi/gomega v1.13.0
go: downloading golang.org/x/net v0.0.0-20210428140749-89ef3d95e781
go: downloading gopkg.in/yaml.v2 v2.4.0
go: downloading golang.org/x/net v0.0.0-20210614182718-04defd469f4e
go: downloading golang.org/x/text v0.3.6
复制代码