我在尝试在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 //これでローカルのブラウザが開きます
请将以下内容用中文进行改写(只需一种方式):