TL;DR
- Go言語のプログラムのコンパイラ+実況環境(
go
コマンド)をソースコードからインストールする方法を紹介します
Go言語のビルド手順
Installing Go from sourceの説明をもとにインストールします.
直近のバージョンのgoは,goでビルドします.そのため,(以前のバージョン)go1.4
をいったんビルドしてから,最近のバージョンのgoをビルドする手順を取ります
(もとの説明は「Bootstrap toolchain from source」にあります).
手順は以下のとおりです.使用したいgoを1.13.5(2019年12月27日時点)とします.
- go1.4をダウンロード,ビルドする
- go1.13.5をダウンロード,go1.4のディレクトリを指定してビルドする
go1.4のビルド
- まず最初に,goを使用しないでビルドできるgo1.4をダウンロードし,ビルドします
wget https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz
mkdir go1.4-bootstrap && tar xzvf go1.4-bootstrap-20171003.tar.gz -C go1.4-bootstrap --strip-components 1
cd ./go1.4-bootstrap/src
CGO_ENABLED=0 bash ./make.bash
cd -
- go1.4-bootstrap-20171003.tar.gzをダウンロードします
- 展開後のディレクトリ名が
go
で,以降のgo1.13.5とバッティングしてしまうので,go1.4-bootstrap
という名前のディレクトリに展開します -
make ./make.bash
で,最小限のビルドを行います -
go1.4-bootstrap/bin
にgo
,gofmt
が生成されます
go1.13.5のビルド
wget https://dl.google.com/go/go1.13.5.src.tar.gz
mkdir go1.13.5 && tar xzvf go1.13.5.src.tar.gz -C go1.13.5 --strip-components 1
cd ./go1.13.5/src
GOROOT_BOOTSTRAP=${PWD}/go1.4-bootstrap bash ./all.bash
cd -
- go1.13.5.src.tar.gzをダウンロードします
- 特段ディレクトリ名を変更する必要はないのですが,他のディレクトリと混在しないようにバージョン名を含めた名前で展開します
-
go1.13.5/src
ディレクトリに移動して,ビルドします.このとき環境変数GOROOT_BOOTSTRAP
に,前章でビルドしたgo1.4のディレクトリを指定します -
go1.13.5/bin
にgo
,gofmt
が生成されます
ビルドしたgo1.13.5ディレクトリを実行パスに移動
ビルドしたgo1.13.5ディレクトリをわかりやすい場所に移動します.
mv ./go1.13.5 /usr/local/
ln -s /usr/local/go1.13.5 /usr/local/go
テスト
/usr/local/go/bin/go
が使用できることを確認します.
export PATH=/usr/local/go/bin:${PATH}
which go
# /usr/local/go/bin/go
go version
# go version go1.13.5 linux/amd64