Solarisに最新のGo言語(Golang)をインストールする

Solaris環境に最新のGo言語コンパイラをインストールして、Go言語プログラムのビルドができるようにしました。

iris

4 minute read

SolarisでHugoを実行したいと思ったのですが、 HugoはSolaris用のバイナリが配布されていません。

なのでソースからビルドする必要があります。 Go言語プログラムのビルドにはGo言語のコンパイラが必要ですが、 これまた、Solaris向けには用意されていません。 そこで今回はまず Solarisで最新のGo言語コンパイラを利用できるようにしたい と思います。

2018年4月20日時点でのGoの最新バージョンは1.10.1ですので、 この記事ではバージョン1.10.1をインストールしてみます。

この記事の目次です。

Go言語とは

Googleによって開発されている

Googleが開発しているプログラミング言語です。

Go言語を採用するメリットは次のようなものがあると個人的に感じました。

  • 軽量
  • 言語仕様がシンプル
  • 並列処理が書きやすい
  • 配布が簡単、クロスコンパイルが容易

コマンドラインツールなどを作って配布するのに最適だと思います。

マスコットキャラクター

この記事のトップ画像はGopher(ホリネズミ)というGo言語の公式マスコットキャラクターです。 Go言語公式HP | golang.orgから引用しています。

こういうゆるゆるキャラは、なかなかこの分野では見ないタイプです。 プログラミング言語はこのように言語仕様だけでなく、 各言語が持つ文化が違っていたりして面白いです。

多くの有名なプロジェクトで採用されている

日頃、これらのツールには大変お世話になっていますが、みんなGo言語で開発されています。 Hugoなんかはこの記事を書くのにバリバリ利用していますので、 Go言語には間接的にですがお世話になっています。

Go言語に興味がある人はtenntenn氏のQiitaを参考にすると良いでしょう。

Solarisとは

Unix系統のOSです。 普通に利用する分にはLinux系統のOSと大差はないと思います。

しかし、Linuxで動いたバイナリがそのままSolarisでも動くというわけではありませんので、 今回はソースからGo言語コンパイラをビルドして、Solarisにインストールしたいと思います。

インストール

ひとつ注意点があります

この記事を公開してすぐに@qt_luigi さんからご指摘を頂いたので加筆します。 @qt_luigi さんありがとうございました。

以下のリンクから問題点を引用します。

Go 1.5 Bootstrap Plan Go 1.5 will use a toolchain written in Go (at least in part).

Question: how do you build Go if you need Go built already?

Answer: building Go 1.5 will require having Go 1.4 available.

Go1.5 から、Goコンパイラを手に入れるためにはGo 1.4が必須にするというプランに関するドキュメントです。 Goのソースツリーから、すべてのCプログラムを排除する方法を検討していたそうです。

Go 1.5のブートストラップ化を目指すGoogle

そして、最新のGo 1.5は、このプランのとおりGoコンパイラが必要となりました。

Go 1.5移行のバージョンをビルドするためにはGo 1.4が必要だそうです。 Go 1.4をインストールした後に、そのGo 1.4を利用して最新のGoをインストールします。 今回はGo 1.10.1をインストールしたいと思います。

ビルドの際に参考にした記事

次の記事を参考にさせていただきました。

上の記事で十分に解説がされているので、 私の記事では実際に実行したコマンドの紹介のみをさせていただきます。

${HOME}/bin とかを自分で作って、その中で作業しました。

以下からGo言語のソースをダウンロードできます。

Go 1.4.3 のインストール

まずは1.4をインストールします。

wget "https://dl.google.com/go/go1.4.3.src.tar.gz"
tar -zxvf go1.4.3.src.tar.gz
rm go1.4.3.src.tar.gz
mv go go1.4.3/
cd go1.4.3/src
./make.bash
cd ../bin
./go version

Go 1.10.1 のインストール

wget "https://dl.google.com/go/go1.10.1.src.tar.gz"
tar -zxvf go1.10.1.src.tar.gz
rm go1.10.1.src.tar.gz
mv go go1.10.1
cd go1.10.1/src
GOROOT_BOOTSTRAP=/path/to/go1.4.3 && export GOROOT_BOOTSTRAP
./make.bash
cd ../bin
./go version

GOROOT_BOOTSTRAP=/path/to/go1.4.3 && export GOROOT_BOOTSTRAP

でGo1.10.1のビルドにGo1.4.3を利用するように指定しています。

./go env で現在の環境変数を確認できます。 あとは ${GOROOT}${GOPATH}なんかをお好みで設定すれば完了です。

リンク