我在尝试在Mac上安装Go并在本地启动A Tour of Go时遇到了困难

因为反复遇到一些问题,所以我会按顺序写下我是如何解决它们的。

使用Homebrew安装Go语言。


$ brew install go

确认安装位置


?  /usr/local/Cellar/go/1.15: 9,769 files, 494.3MB

在自制软件中,它会放置在/usr/local/Cellar/的目录下。

确认版本


$ go version
go version go1.15 darwin/amd64

在合适的目录下创建文件。


$ mkdir -p ~/go/src/practice

你好,世界试试看

在练习目录下创建一个名为hello.go的文件
参考Golang官方:测试你的安装


package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

试着构建


hello.go:3:8: cannot find package "fmt" in any of:
    /Users/miztakahashi/go/src/fmt (from $GOROOT)
    ($GOPATH not set. For more details see: 'go help gopath')
package hello: cannot find package "runtime" in any of:
    /Users/miztakahashi/go/src/runtime (from $GOROOT)
    ($GOPATH not set. For more details see: 'go help gopath')

找不到套件的错误……
可能是$PATH没有设定好吧?

我进行了各种调查。

通过检查 go env 可以了解环境变量的列表及其原因。


Mizukimbp:hello miztakahashi$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/miztakahashi/Library/Caches/go-build"
GOENV="/Users/miztakahashi/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH=""
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/Users/miztakahashi/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/Users/miztakahashi/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
.
.
.

通常情况下,如果使用Homebrew进行安装,

? /usr/local/Cellar/go/1.15:9,769个文件,494.3MB

由于似乎会安装在/usr/local/Cellar/的下一层目录中,
因此需要将以下路径改写为正确的位置。

GOPATH=””
GOROOT=”/Users/miztakahashi/go”
GOTOOLDIR=”/Users/miztakahashi/go/pkg/tool/darwin_amd64″

将GOPATH设置为空字符串,将GOROOT设置为”/Users/miztakahashi/go”,将GOTOOLDIR设置为”/Users/miztakahashi/go/pkg/tool/darwin_amd64″。

我们将修改环境变量,以使/go直接位于/usr/local/Cellar/下。


$ echo 'export GOPATH=$HOME/go' >> ~/.bash_profile
$ echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bash_profile 
$ echo 'export GOROOT=/usr/local/Cellar/go/1.15/libexec' >> ~/.bash_profile
$ echo 'export GOTOOLDIR=/usr/local/Cellar/go/1.15/libexec/pkg/tool/darwin_amd64' >> ~/.bash_profile

$ source ~/.bash_profile // これをやらないと反映されない

请使用”go env”命令确认是否反映了相关信息。


$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/miztakahashi/Library/Caches/go-build"
GOENV="/Users/miztakahashi/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/miztakahashi/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/miztakahashi/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.15/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.15/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"

GOPATH、GOROOT和GOTOOLDIR路径

只要/usr/local/Cellar/下面是 “go”,就可以了!

因为路径正确,所以我再次尝试构建一下。


$ cd ~/go/src/practice
$ go build 

我能够无问题地构建。特别是没有任何结果返回。
我将测试执行构建良好的文件(二进制文件)来确认是否正确。


$ ./hello
hello, world

似乎是个坚强的人。

我們接下來試著在本地啟動一個Go導覽遊覽。

听说可以在本地运行A Tour of Go,所以我决定试一试。
https://tour.golang.org/welcome/3


go get golang.org/x/tour

无法使用 git clone 权限被拒绝的问题


# cd .; git clone -- https://go.googlesource.com/tour /Users/miztakahashi/go/src/golang.org/x/tour
fatal: could not create work tree dir '/Users/miztakahashi/go/src/golang.org/x/tour': Permission denied
package golang.org/x/tour: exit status 128

看起来go get golang.org/x/tour与git clone https://github.com/golang/tour是相同的(这里也返回了相同的错误)。

请确认一下SSH是否通畅。


Mizukimbp:~ miztakahashi$ ssh -T git@github.com
Hi AnnieMizukiTakahashi! You've successfully authenticated, but GitHub does not provide shell access.

看起来通过了。

加上sudo命令执行后顺利进行。


sudo git clone https://github.com/golang/tour
sudo go build
sudo cp tour $GOPATH/bin
tour //これでローカルのブラウザが開きます

请将以下内容用中文进行改写(只需一种方式):

广告
将在 10 秒后关闭
bannerAds