...
Run Format

ソースコードからのインストール

はじめに

Goはオープンソースプロジェクトで、BSD-style licenseのもと配布されています。 このドキュメントではソースコードを取得し、あなたのマシンでビルドし、実行する方法を説明します。

ほとんどのユーザーはこのようなことをする必要はありません。かわりに、インストールで説明されているすでにコンパイルされたバイナリパッケージをインストールほうがより簡単な作業でしょう。 もしあなたがこのようなプリコンパイルパッケージの中身の開発を手伝いたいなら、さあどうぞ、続けてください。

二つの公式なGoコンパイラツールチェインがあります。 このドキュメントでは、gc Goコンパイラおよびツール(6g8gなど)について解説します。 従来のGCCバックエンドによるgccgoを使いたい場合は、Setting up and using gccgoを見てください。

Goコンパイラは三つの命令セットをサポートしています。 アーキテクチャによって、コンパイラの品質には差があります。

amd64 (別名: x86-64); 6g,6l,6c,6a
成熟した実装です。コンパイラは効果的な最適化(レジスタ化)をおこない、良いコードを生成します(ただし、gccgoのほうがより良い場合もあります)。
386 (別名: x86もしくはx86-32); 8g,8l,8c,8a
amd64ポーティングと同等です。
arm (別名: ARM); 5g,5l,5c,5a
LinuxとFreeBSD、NetBSDバイナリをサポートします。ほかのポーティングと比べ、あまり使用されていません。

低レベルのOSインターフェイスコードを除き、ランタイムはすべてのポーティングで同じで、mark-and-sweepガーベッジコレクタや効率的な配列と文字列のスライス、必要に応じて成長および縮小するスタックなど効率的なゴルーチンをサポートしています。

コンパイラはDragonFly BSDやFreeBSD、Linux、NetBSD、OpenBSD、 OS X (Darwin)、Plan 9、Solaris、Windowsをターゲットにすることができます。 サポートされているすべての組み合わせは、下記の環境変数に書かれています。

C言語ツールをインストールする

GoツールチェインはC言語で書かれています。ビルドするには、Cコンパイラがインストールされている必要があります。 OS固有の手順については、GoコミュニティウィキページのInstallFromSourceを参照してください。

Mercurialをインストールする

次の手順を実行するためには、Mercurialがインストールされている必要があります。(hgコマンドがあるかどうかを確かめてください。)

もしMercurialがインストールされていなければ、Mercurial downloadsのページにある手順を実行してください。

Mercurialのバージョンが1.7.x以上であれば、Certification Authoritiesの設定が必要になります。エラーメッセージは次のようなものです:

warning: code.google.com certificate with fingerprint b1:af: ... bc not verified (check hostfingerprints or web.cacerts config setting)

MercurialからCAがないことを指摘されている場合は、Mercurialのバージョンを確認(hg --version)し、 必要に応じてCAを設定してください。

リポジトリの取得

Goはgoというディレクトリにインストールされます。 親となるディレクトリに移動し、goというディレクトリがないことを確認してください。 そして、リポジトリを取得してください:

$ hg clone -u release https://code.google.com/p/go

もしGoのソースコードを変更し、このプロジェクトへ貢献するなら、リポジトリに移動し、releaseブランチから開発用のdefaultブランチへ切り替えてください。 そうでなければ、この手順は無視してください。

$ hg update default

Goをインストールする

Goディストリビューションをビルドするには、次を実行してください。

$ cd go/src
$ ./all.bash

(Windowsでビルドするには、all.batを使用してください。)

もしすべて上手くいったなら、次のような出力を表示して終了します:

ALL TESTS PASSED

---
Installed Go for linux/amd64 in /home/you/go.
Installed commands in /home/you/go/bin.
*** You need to add /home/you/go/bin to your $PATH. ***

最後の数行の詳細はOSやアーキテクチャ、インストールに使用したディレクトリによって異なります。

ビルドを制御する詳細な方法については、環境変数の項目を参照してください。 all.bash (もしくはall.bat)はGoの重要なテストを実行します。これは単にGoをビルドするより時間がかかります。 テストスイートを実行したくない場合は、make.bash (もしくはmake.bat)を代わりに使ってください。

インストールをテストする

Goが正しくインストールされたかどうかは、簡単なプログラムをビルドすることで確かめられます。

hello.goというファイルを作り、次のプログラムを記述してください:

package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

そして、goツールで実行してください:

$ go run hello.go
hello, world

"hello, world"というメッセージが表示されていれば、Goは正常にインストールされています。

開発環境をセットアップする

ほとんどは完了しましたが、もう少しセットアップが必要です。

Goコードの書き方 Goツールのセットアップ方法と使い方を学びましょう

Goコードの書き方のドキュメントは、Goツールを使うための必須のセットアップ手順を紹介しています。

追加のツールをインストールする

いくつかのGoツールのソースコード(godocを含む)はgo.toolsリポジトリにあります。 これらをすべてインストールするには、go getコマンドを実行してください:

$ go get code.google.com/p/go.tools/cmd/...

もしくは、特定のコマンド(この場合はgodoc)だけインストールしたい場合:

$ go get code.google.com/p/go.tools/cmd/godoc

これらのツールをインストールするには、go getコマンドはMercurialがその環境でインストールされていることを必要とします。

ワークスペース(GOPATH)をセットアップする必要もあります。 詳細は、Goコードの書き方をみてください。

注記: goコマンドはgodocバイナリを$GOROOT/bin (もしくは$GOBIN)に、 covervetバイナリを $GOROOT/pkg/tool/$GOOS_$GOARCHにインストールします。 後半のコマンドは、 "go tool cover"と、 "go tool vet"で実行できます。

コミュニティの情報

一般的なコミュニティとして、 #go-nutsFreenode IRCサーバーにあり、 Go Nutsメーリングリストは あなたのインストールや開発作業の問題を手助けしてくれます。 最新情報についていきたい場合には他のメーリングリストもあります。 golang-checkinsではGoのリポジトリが更新されるたびに要約されたメッセージを受け取ることができます。

バグは、Go issue trackerから報告することが出来ます。

リリースについていく

Goプロジェクトは安定版のタグをMercurialリポジトリにつけています: release

releaseタグはGoの現在の安定リリースを指しています。 ほとんどのGoのユーザはこのバージョンを使うべきです。新しいリリースは、 golang-announce メーリングリストでアナウンスされます。

現在のソースツリーを最新リリースに更新するには、次を実行してください:

$ cd go/src
$ hg pull
$ hg update release
$ ./all.bash

環境変数

Goのコンパイル環境は環境変数でカスタマイズすることができます。 ビルドに必須のものはありませんが、初期値を上書きすることもできます。

$GOARCH$GOOSターゲット環境を識別します、実行している環境ではありません。 実際、常にクロスコンパイルします。 アーキテクチャによって、ターゲット環境が実行できるバイナリの種類を示します: x86-64システムで32ビットのOS動かしている場合は、GOARCH386に設定する必要があります。 amd64ではありません。

もしこれらの初期値を上書きしたい場合には、シェルのプロファイル($HOME/.bashrc$HOME/.profileなど)で設定してください。 例えば次のようになります:

export GOROOT=$HOME/go
export GOARCH=amd64
export GOOS=linux

繰り返しになりますが、ビルドやインストール、開発時にこれらの設定値が必要になることはありません。