Go
golang

Golangの最新版をソースからビルドする

Ubuntu 16.04 でgolang 1.9.3 をビルドしました。
2018.2.19 golang 1.10のビルドを追記しました。

準備

golangはv1.5以降golang自身で書かれているため、ソースからビルドするためにはまずなんとかしてそこで使用できるgolangをインストールする必要があります。
そのためにはいくつか方法があります。

  • Ubuntuのリポジトリにあるgolangをapt-get でインストールする
  • golang v1.4のソースコードを入手してビルドする

ここではてっとりばやく前者を試しました。

$ sudo apt-get install golang-go
$ which go
/usr/bin/go
$ go version
go version go1.6.2 linux/amd64

golang のソースを入手してビルド

wget https://dl.google.com/go/go1.9.3.src.tar.gz
tar xf go1.9.3.src.tar.gz 
cd go/src
GOROOT_BOOTSTRAP=/usr/lib/go ./make.bash 
$ ../bin/go version
go version go1.9.3 linux/amd64

go/bin に実行ファイルが置かれるので、このディレクトリをPATHに追加すればインストール完了。

ビルドとテストを行うには make.bashの代わりにall.bash を実行します。(非力なマシンではテストにけっこう時間がかかります。)

GOROOT_BOOTSTRAP=/usr/lib/go ./all.bash 

追加情報(2018.1.30)

メモリ600MBの仮想マシンでビルドしたら、out of memory error でビルドが失敗しました。
1.7GBに増やしたら成功しました。

追加情報(2018.2.19)

golang 1.10ではGOROOT_BOOTSTRAPを明示的に指定しなくても、現在のPATHにgoコマンドがあれば、それを使ってくれるように変わりました。

$ which go
/home/koba/work/go/go1.9/bin/go
$ cd src
$ ./make.bash
Building Go cmd/dist using /home/koba/work/go/go1.9.
Building Go toolchain1 using /home/koba/work/go/go1.9.
Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1.
Building Go toolchain2 using go_bootstrap and Go toolchain1.
Building Go toolchain3 using go_bootstrap and Go toolchain2.
Building packages and commands for linux/amd64.
---
Installed Go for linux/amd64 in /home/koba/work/go/go1.10
Installed commands in /home/koba/work/go/go1.10/bin
c$ cd ../bin
$ ./go version
go version go1.10 linux/amd64