The problem

When installing Golang 1.14 using Homebrew, a request timeout error is reported when executing go Build

The brew install [email protected]... = = > go build Last 15 lines from/Users/xx/Library/Logs/Homebrew/[email protected]/03. Go: the 2021-08-18 01:14:01 + 0800 go build go: golang.org/x/[email protected]: Get "https://proxy.golang.org/golang.org/x/net/@v/v0.0.0-20190620200207-3b0461eec859.mod" : dial TCP 142.251.43.17:443: i/o timeoutCopy the code

Problem orientation

It was preliminarily determined that there was an agent problem during the ‘Go Build’ execution. Domestic users need to set the proxy

Configuration goproxy

Try setting the above environment variables

export GOPROXY=https://goproxy.io,direct
export GO111MODULE=on
Copy the code

Unfortunately, the same error is reported, suspecting that an environment variable was unset somewhere during the installation process

View more installation information

Use the -v parameter for installation

The brew install [email protected] - vCopy the code

See the homebrew install golang 1.14 ruby script path: ‘/ usr/local/homebrew/Library/Taps/homebrew/homebrew – core/Formula/[email protected]

And you can see that the installation process downloads two compressed packages and executes ‘./make.bash –no-clean’.

/usr/bin/sandbox-exec -f /private/tmp/homebrew20210818-15926-10cv6ja.sb nice ruby -W1 -- / usr/local/Homebrew/Library/Homebrew/build. The rb/usr/local/Homebrew/Library/Taps/Homebrew/Homebrew - core/Formula/[email protected]  --verbose ... tar --extract --no-same-owner --file /Users/huangcheng/Library/Caches/Homebrew/downloads/5ce0f7e2a4821a377e09f2355ce146bf66f8e11bb6fc93320c8146a05198abc6--go 1.14.15. SRC. Tar. Gz -- -- directory/private/TMP/e6dj d20210818-15927-184... tar --extract --no-same-owner --file /Users/huangcheng/Library/Caches/Homebrew/downloads/ad0901a23a51bac69b65f20bbc8e3fe998bc87a3be91d0859ef27bd1fe537709--go 1.7. Darwin - amd64. Tar. Gz - directory/private/TMP/d20210818-15927-1 qdv80h... ==> ./make.bash --no-clean ...Copy the code

Open the rb file and find the code for ‘make. Bash ‘in the SRC directory

    cd "src" do
      ENV["GOROOT_FINAL"] = libexec
      system "./make.bash", "--no-clean"
Copy the code

Find the two packages and unzip them to the make.bash file in the SRC directory. The environment variable is unset -_-!

export GOENV=off
unset GOBIN # Issue 14340
unset GOFLAGS
unset GO111MODULE
Copy the code

How do I set the GO111MODULE

Open the ‘/ usr/local/Homebrew/Library/Taps/Homebrew/Homebrew – core/Formula/[email protected]’ file, find the go build the calling code

. system "go", "build" ...Copy the code

Before executing the code, reset the link variable

. ENV['GOPROXY'] = 'https://goproxy.io,direct' ENV['GO111MODULE'] = 'on' system "go", "build" ...Copy the code

Save and re-execute ‘brew install [email protected] -v’

==> Summary 🍺 /usr/local/cellar /[email protected]/ 1.14.15:9,471 files, 425.7MB, built in 1 minute 16 secondsCopy the code

Success!