MacへGoをインストール・A Tour of Goをローカルで起動するまでにつまづいた所


ちょこちょこつまづいたので、どう解決したか順を追って書いておきます。

HomebrewでGoをインストール


$ brew install go

インストールされた場所を確認する


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

Homebrewだと/usr/local/Cellar/直下に入っていきます

versionを確認する


$ go version
go version go1.15 darwin/amd64

適当なディリクトリにファイルを作成


$ mkdir -p ~/go/src/practice

Hello woldしてみる

practiceディリクトリにhello.go を作成する
参考 Golang公式:Test your installation

hello.go

package main

import "fmt"

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

buildしてみる


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')

cannot find packageのエラー・・・
$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 files, 494.3MB

/usr/local/Cellar/の直下に入るようなので、
以下のpathを正しい場所に書き換えてやる必要がありそうです。

GOPATH=""
GOROOT="/Users/miztakahashi/go"
GOTOOLDIR="/Users/miztakahashi/go/pkg/tool/darwin_amd64"

/usr/local/Cellar/直下にgoが入るように環境変数を修正していきます。


$ 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が来ている形になってればOK!

正しくパスを通せたので、もう一度buildしてみる


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

問題なくbuildできました。特に何も結果は返ってきません
正しくbuildできているかファイル(バイナリファイル)を実行してテストしてみます


$ ./hello
hello, world

大丈夫そうです。

次はA Tour of Goをローカルで起動させてみる

A Tour of Goはローカルで起動できるらしいのでやってみることにしました。
https://tour.golang.org/welcome/3


go get golang.org/x/tour

Permission deniedで 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 [email protected]
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 //これでローカルのブラウザが開きます