Raspberry Pi2にGo1.6をインストール

Raspberry Pi2にGo1.6を入れようと思ったところ、ARM向けバイナリがgolang.orgでは提供されていなかったのでビルド手順をメモ。

まずは普通にソースをビルドしようとする。

$ wget https://storage.googleapis.com/golang/go1.6.src.tar.gz
$ tar zxvf go1.6.src.tar.gz
$ cd go/src
$ ./all.bash
##### Building Go bootstrap tool.
cmd/dist
ERROR: Cannot find /home/pi/go1.4/bin/go.
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.

Go1.5からはセルフホスティングされているので、Go1.6のビルドにGo1.4以上が必要。しかしaptにはGo1.3.3しか入ってない。

$ sudo apt-cache show golang
Package: golang
Version: 2:1.3.3-1
(以下略)
...

なので、一度Go1.4をビルドしてインストールし、更にそれを使ってGo1.6をインストールすることになる(二度手間...)。

ここではGo1.4系列の最新版である1.4.3を使う。

$ sudo apt-get install -y golang
$ wget https://storage.googleapis.com/golang/go1.4.3.src.tar.gz
$ mkdir ~/go1.4
$ tar -C ~/go1.4 -zxvf go1.4.3.src.tar.gz
$ mv ~/go1.4/go/* ~/go1.4/
$ rmdir ~/go1.4/go/
$ cd ~/go1.4/src
$ ./all.bash

混乱を避けるためaptでインストールしたGo1.3を除去する。

$ sudo apt-get purge golang
$ sudo apt-get autoremove

念のためバージョンを確認する。

$ echo 'export PATH="$PATH:$HOME/go1.4"' >> ~/.bashrc
$ go version

Go1.6のインストール

$ ~/go/src  # go1.6
$ echo 'export GOROOT_BOOTSTRAP="$HOME/go1.4"' >> ~/.bashrc
$ echo 'export PATH="$PATH:$GOROOT_BOOTSTRAP"' >> ~/.bashrc

all.bashを覗くと"all.bash must be run from $GOROOT/src"と書いてあるので、それに従う。

$ echo 'export GOROOT="$HOME/go"' >> ~/.bashrc
$ echo 'export PATH="$PATH:$GOROOT"' >> ~/.bashrc

$ cd $GOROOT/src
$ ./all.bash

以上で出来たはず。 (夜遅くまでかかってしまったので誤植等があれば後で直す)