DRYな備忘録

Don't Repeat Yourself.

【Go言語】ローカルのGoの(継続的な)バージョンアップ【go1.7】

なんかいつの間にこんなrepoあったの

git clone https://go.googlesource.com/go

とりあえず現状確認

% go version
go version go1.6.2 darwin/amd64
% echo $GOROOT
/Users/otiai10/.go/1.6.2
% ls /Users/otiai10/.go
1.4.3 1.5.3 1.6.2 

なるほど、かつての自分はディレクトリを分けて保存していたっぽい。ミラーじゃなくて公式にソースを配布するレポジトリになってるので、これからはgitのrevisionでソースのバージョンを管理できるはず。ということで、以下のような構成にしました。

% cd /Users/otiai10/.go
% git clone https://go.googlesource.com/go tip
% ls /Users/otiai10/.go
1.4.3 1.5.3 1.6.2 tip

いいかんじ。そして、いざインストール。これ Installing Go from source - The Go Programming Language に従って、

% cd /Users/otiai10/.go/tip
% git checkout go1.7 # "go1.7" のリリースタグのリビジョンへ移動
% cd src
% GOROOT_BOOTSTRAP=/Users/otiai10/.go/1.6.2 ./all.bash
# 1.4以降のバイナリを要求するので、そこへのpathを指定する
# 今回は、直前の1.6を使った。今後も1.6でいいだろうと思う

で、

# 中略...
+pkg debug/pe, type Section struct, Relocs []Reloc
+pkg debug/pe, type StringTable []uint8
+pkg time, func Until(Time) Duration

ALL TESTS PASSED

---
Installed Go for darwin/amd64 in /Users/otiai10/.go/tip
Installed commands in /Users/otiai10/.go/tip/bin
*** You need to add /Users/otiai10/.go/tip/bin to your PATH.

と言われるので、~/.zshrcGOROOTの値を/Users/otiai10/.go/tipに変え、PATH=$PATH:$GOROOT/bin:$GOPATH/binは変わらず。別シェルを立ててログインしなおすと、

% go version
go version go1.7 darwin/amd64

良い感じっぽい。エディタの環境設定もちょっといじる必要があるはず。まあ後でいいや。そんで、今後1.8、1.9とかがリリースされたら、

% cd /Users/otiai10/.go/tip
% git fetch origin
% git checkout {なんかそのバージョン}
% cd src
% GOROOT_BOOTSTRAP=/Users/otiai10/.go/1.6.2 ./all.bash

とすればいいはず。PATHはtipに通ってるので、もう編集する必要は無いはず。

雑感

  • ベルリンで働きはじめて半年が経ちました
  • サーバサイドエンジニアのはずが、iOS書いてます
  • ビール🍺の飲み過ぎで太りました

DRYな備忘録として

f:id:otiai10:20160904071402j:plain