Ubuntu 16.04でソースからGoをビルドする方法

前書き

Goは、Googleが開発した最新のオープンソースプログラミング言語です。 シンプルで堅牢なライブラリとツールのセットを備えているため、信頼性の高い効率的なアプリケーションを簡単に構築できます。

Goのアプリケーションを最新バージョンの言語でテストしたり、Goのコードベースに貢献したり、Goのバージョン管理を改善したい場合は、Goをソースからビルドする必要があります。 このチュートリアルでは、Goのビルド方法、実用的な考慮事項、および「Hello、World」テストアプリケーションのビルド方法について説明します。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • Ubuntu 16.04での初期サーバー設定チュートリアル、sudoの非rootユーザーとファイアウォールを含みます。

  • サーバーにインストールされたGit。https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-16-04に従ってセットアップできます[Ubuntu 16.04用のこのGitインストールチュートリアル。]

  • オプションで、https://github.com/ [GitHub]アカウント。

ステップ1-ビルド依存関係のインストール

開始する前に、リポジトリキャッシュが最新であることを確認してください。

sudo apt-get update

デフォルトでは、Ubuntuには、コンパイラ、ライブラリ、ツールなど、Goのビルドに必要なすべてのパッケージが付属していません。 Cをコンパイルするための + gcc +、C をコンパイルするための `+ g `、およびビルド自動化ツールである ` make `を含むパッケージである ` build-essential +`をインストールすることで、ビルドとコンパイルの依存関係を簡単にインストールできます。

sudo apt-get install build-essential

インストールが完了すると、Goをソースからビルドするために必要なツールがすべて揃います。 次に、Go 1.4バイナリが必要になります。

ステップ2-Go 1.4.3のインストール

Go 1.5+をビルドするには、Go 1.4が必要です。 これは、Go 1.5+のツールチェーンがGo自体で記述されているためです。 Go 1.4または任意のポイントリリース(1.4.1、1.4.2、または1.4.3)を使用できます。このチュートリアルでは、Go 1.4.3を使用します。

SHA1チェックサムを含むGoバイナリは、https://golang.org/dl/ [Goのダウンロードページ]にあります。 `+ go1.4.3.linux-amd64.tar.gz +`というファイルをホームディレクトリにダウンロードします。

cd ~
curl -O https://storage.googleapis.com/golang/

このファイルは正規のソースからダウンロードされましたが、ダウンロードしたものの整合性を検証することは依然としてセキュリティ上の良い習慣です。 これは、ダウンロードページで提供されるファイルハッシュとダウンロードしたファイルのハッシュを比較することで最も簡単に実行できます。

まず、ダウンロードしたファイルのハッシュを取得します。

sha1sum go1.4.3.linux-amd64.tar.gz

このコマンドの出力を、Goダウンロードページで提供されているチェックサムと比較します。

Output332b64236d30a8805fc8dd8b3a269915b4c507fe  go1.4.3.linux-amd64.tar.gz

チェックサムが一致する場合、ファイルを解凍できます。

tar xvf go1.4.3.linux-amd64.tar.gz

「+ x 」フラグはe ** X ** tractを表し、「 v 」は「 tar 」に** V ** erbose出力を使用するように指示します(つまり、 抽出されているファイルを一覧表示するため)、 ` f +`で F ilenameを指定できます。

Go 1.4は `+ go `というディレクトリに展開されますが、Goビルドスクリプトはデフォルトで `〜/ go1.4 `でGo 1.4バイナリを探します。 ` mv +`コマンドを使用してディレクトリの名前を変更します。

mv go go1.4

これで、ソースからGoをビルドするために必要な依存関係ができました。 Go 1.4をホームディレクトリから別の場所に移動する場合は、次の手順を実行できます。 そうでない場合は、ステップ4に進んでGoソースを複製できます。

手順3-Go 1.4.3の再配置(オプション)

Goビルドスクリプトが実行されると、 `+ GOROOT_BOOTSTRAP `という環境変数に基づいてGo 1.4が検索されます。 その変数が設定されていない場合(デフォルト)、ビルドスクリプトは、 ` go1.4 `ディレクトリがホームディレクトリにあると想定します。 Go 1.4を別の場所に移動したい場合は、 ` GOROOT_BOOTSTRAP`変数を使用できます。 ここで、 `+ / usr / local / go1.4 +`に移動します。

まず、ディレクトリ自体を移動します。

sudo mv go1.4

次に、 `+〜/ .profile +`ファイルを変更して、環境にパスを設定する必要があります。

sudo nano ~/.profile

ファイルの最後に、次の行を追加します。

〜/ .profile

. . .
export GOROOT_BOOTSTRAP=go1.4

ファイルを保存して終了します。 この変更を有効にするには、プロファイルを更新してください。

source ~/.profile

次に、Goソースを複製します。

ステップ4-Goソースの取得

Goバイナリを保存するための推奨場所は、このチュートリアルで使用する `+ / usr / local +`です。 ただし、好きな場所に保存できます。

`+ / usr / local +`に移動し、Gitを使用してリポジトリを複製します。

cd
sudo git clone https://go.googlesource.com/go

+ / usr / local`は* root *が所有しているため、ルート権限で + git clone`を実行する必要があります。 クローンを作成している場合、ユーザーが書き込み権限を持っているディレクトリに移動すると、sudoなしでこのコマンドを実行できます。

クローンが正常に完了すると、 + / usr / local`に + go + `ディレクトリが作成されます。 そのディレクトリに移動します。

cd go

ビルドする前に、使用するGoバージョンを選択する必要があります。

ステップ5-Goバージョンの選択

Goソースには、利用可能なバージョンごとに異なるGitブランチがあります。 ブランチの名前は次のとおりです。

  • 開発中の最新バージョンの + master +

  • 安定バージョンの場合は「+ go +」

ここでは、Go 1.7.4を使用します。つまり、 `+ go1.7.4 +`ブランチを使用します。

ブランチを変更するには、 `+ git checkout `コマンドを使用します。 ` / usr / local `と ` / usr / local / go1.4 +`は* root *が所有しているため、これらのコマンドをルート権限で実行する必要があります。

sudo git checkout

この手順が完了すると、希望するバージョンのGoソースコードがダウンロードされました。 このチュートリアルの重要な部分であるGo自体の構築に進む準備ができました。

ステップ6-Goの構築

goをビルドするには、ソースコードに付属しているbashスクリプト `+ src / all.bash +`を実行する必要があります。 スクリプトは、必要な依存関係がすべてあることを確認し、いくつかのテストを実行して、ビルドを完了します。

スクリプトを実行しますが、Go 1.4.3バイナリの場所を変更した場合は、 + -E +`フラグを追加する必要があります(つまり、 `+ sudo -E bash。/ all.bash +)環境変数を保持します。

cd src
sudo bash ./all.bash

スクリプトの完了には少し時間がかかります。 ビルドが完了すると、次の出力が表示されます。

Output of src/all.bashALL TESTS PASSED

---
Installed Go for linux/amd64 in /usr/local/go
Installed commands in /usr/local/go/bin
*** You need to add /usr/local/go/bin to your PATH.

Goが構築されたので、いくつかの環境変数を設定する必要があります。

ステップ7-Go変数の設定

環境変数は、Goインストールをカスタマイズする強力な方法です。 最も重要で有用なものについて説明します。

Goの使用を開始するには、Goバイナリパス `+ go / bin `を ` PATH `および ` GOPATH `環境変数に追加する必要があります。 「 GOPATH 」はGoアプリケーションコードとバイナリが保存される場所であり、これを「〜/ work +」と指定しますが、これは自由にカスタマイズできます。

これらの変数を `+〜/ .profile +`ファイルに追加します。 お気に入りのテキストエディターで開きます。

nano ~/.profile

ファイルの最後に、次の行を追加します。

〜/ .profile

. . .
export GOPATH=
export PATH=$PATH:go/bin:$GOPATH/bin

Goをデフォルト以外のパスにインストールした場合、つまり `+ / usr / local / go `以外の場合は、 ` GOROOT +`変数を定義する必要があります。 その場合は、次の行も追加します。

〜/ .profile

export GOROOT=
export GOPATH=
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

ファイルを保存して終了します。 これらの変更を有効にするには、プロファイルを更新してください。

source ~/.profile

この手順が正常に完了すると、完全に機能するGoインストールが完了します。 次に、すべてが期待どおりに機能することを確認するためにテストします。

ステップ8-Goインストールのテスト

一般的なテスト方法は、Goが動作していることは、単純な「Hello、World」アプリケーションを作成して実行することです。

これを行うには、まず、 `+ GOPATH +`に基づいてアプリファイルのディレクトリを作成して移動します。 Goパス内で好きなものを選択できますが、ここの例では、https://github.com/golang/go/wiki/GithubCodeLayout [use GitHubを使用する場合に必要な階層の種類を設定しますコードを管理する]。 ただし、この階層はGitHubアカウントがなくても機能します。

mkdir -p $GOPATH/src/github.com//test_project
cd $GOPATH/src/github.com//test_project

次に、「+ hello.go +」という「Hello、World」Goファイルを作成します。

nano hello.go

ファイルに次のコードを追加します。

hello.go

package main

import "fmt"

func main() {
   fmt.Printf("Hello World!\n")
}

この例では、 `+ Printf()`のようなI / O関数を実装する ` fmt `パッケージを使用し、プログラムの実行時に* Hello World *を出力する ` main()+`関数を定義します。

保存してファイルを終了し、Goコマンド `+ install`を使用してコンパイルします。

go install github.com//test_project

コンパイルが終了したら、次のコマンドで実行できます。

hello
  • Hello World!*がターミナルに出力されます。これは、Goインストールが機能していることを意味します。

ステップ9-Goバージョンの変更(オプション)

このチュートリアルでは、Go 1.7.4をセットアップしました。 別のバージョンを使用する場合は、アクティブなGitブランチを変更してGoを再構築する必要があります。

現在のGoバージョンを確認するには、 `+ go version +`を使用できます。

go version
Outputgo version go1.7.4 linux/amd64

例として、Goバージョンを1.6.4に切り替えます。 このバージョンは `+ go1.6.4 +`ブランチにあるため、切り替えてください。

cd /go
sudo git checkout

すべてが最新であることを確認するには、 `+ git pull`を実行して、選択したブランチの最新の変更を取得します。

sudo git pull origin

ここで、ステップ3でGo 1.4を再配置した場合は、ビルドスクリプトを以前のように実行し、必ず `+ -E +`フラグを追加してください。

cd src
sudo bash ./all.bash

これを完了するには時間がかかります。 ビルドが完了すると、次の出力が表示されます。

Output of src/all.bashALL TESTS PASSED

---
Installed Go for linux/amd64 in /usr/local/go
Installed commands in /usr/local/go/bin
*** You need to add /usr/local/go/bin to your PATH.

手順5の `+〜/ .profile`にはGo変数が既に設定されているため、バージョンを変更するために必要な作業はこれだけです。

結論

ソースからビルドしてパスを設定することで、Goアプリケーションを開発およびテストしたり、Goコードベースに貢献したりするための優れた基盤を手に入れることができます。

詳細については、https://www.digitalocean.com/company/blog/get-your-development-team-started-with-go/ [Goの開始方法]またはhttps:// wwwをご覧ください。 digitalocean.com/community/tutorials/how-to-use-martini-to-serve-go-applications-behind-an-nginx-server-on-ubuntu[Go MartiniでGoアプリケーションを提供する方法]、Go Webフレームワーク。 Goオープンソースに貢献するためのインスピレーションを探している場合は、https://www.digitalocean.com/company/blog/introducing-go-qemu-and-go-libvirt/ [go-qemuとgo-libvirt]プロジェクト。