ちょこちょこつまづいたので、どう解決したか順を追って書いておきます。
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
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 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 //これでローカルのブラウザが開きます