go get で permission denied が発生する

goのバージョンアップが上手くできてなかったので発生した。

事象

go get でパッケージをインストールしようとすると、以下のようなエラーが起きる。

$ go get -u github.com/kawaken/chatwork-cli
go install runtime/internal/atomic: open /usr/local/go/pkg/linux_amd64/runtime/internal/atomic.a: permission denied

どうやら古いバージョンを移動や削除せずに、tarで展開してしまったのが良くなかったらしい。

ちゃんとバージョンアップする

現行のバージョンを確認。

$ go version
go version go1.7.1 linux/amd64

既存のgoをバージョン付きのパスに変更する。残す必要がなければ削除して良い。

$ sudo mv /usr/local/go /usr/local/$(go version | awk '{print $3}')
$ ls -d1 /usr/local/go*
/usr/local/go1.7.1/

新しいバージョンのgoをインストールする。

# cd /usr/local/src/
# wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
# tar -C /usr/local -xf go1.8.3.linux-amd64.tar.gz
# go version
go version go1.8.3 linux/amd64