Gethのコンパイル環境構築とコンパイル方法

こんにちは。休みの日はDapp開発の勉強をしている 藤田拓弥@ディズニー好きのSE です。

今日はイーサリアムが提供しているクライアントソフトのGethを触ってみようと思い、公式サイトにアクセスしましたが「Retrieving packages from release server...」のダイアログが表示され続け何もできませんでした。インストール用の実行ファイルもダウンロードできませんでした。(2018年9月30日時点)

f:id:takuyafujita:20180930160257j:plain

ブラウザを変えてみても状況が変わらなかったのでダウンロードは諦めて、Gitに公開されているGethのソースコードを自分でコンパイルする方法を試してみました。

試した環境はwindows10です。

Gethのコンパイル方法は以下のサイトを参考にしました。

Git:Geth公式のインストール手順(Windows

github.com

Qiita:gethをwindows10にインストールする

qiita.com

両方参考にしましたが、内容は同じです。

Gethのコンパイル環境構築

Go言語のインストール

公式サイトからwindows用のMSIファイルをダウンロードしてインストールします。

コマンドプロンプトでバージョンが表示されればOKです。

C:\>go version
go version go1.11 windows/amd64

chocolatey(パッケージ管理ソフト)のインストール

コマンドプロンプトまたはWindows PowerShellのどちらかを使用してインストールします。
インストールに必要な要件等は公式サイトを確認してください。

コマンドプロンプトを使用する場合

管理者として以下のコマンドを実行します。

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
Windows PowerShellを使用する場合

管理者として以下のコマンドを実行します。

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

コマンドプロンプトでバージョンが表示されればOKです。

C:\>choco --version
0.10.11

chocolateyを使用して必要なソフトをインストール

既にインストール済みの場合は対応不要です。インストール時にスクリプトを実行するか?と聞かれるので「y」を選んで進めます。オプション -y をつけると実行確認が表示されないので楽です。

C:\Windows\system32> choco install git
C:\Windows\system32> choco install golang
C:\Windows\system32> choco install mingw

インストール後にsuccessfullyが表示されていればOKです。

環境変数の設定

C:\Users\xxx> set "GOPATH=%USERPROFILE%"
C:\Users\xxx> set "Path=%USERPROFILE%\bin;%Path%"
C:\Users\xxx> setx GOPATH "%GOPATH%"
C:\Users\xxx> setx Path "%Path%"

Gethのコンパイル手順

githubからGethのソースをclone

C:\Users\xxx> mkdir src\github.com\ethereum
C:\Users\xxx> git clone https://github.com/ethereum/go-ethereum src\github.com\ethereum\go-ethereum

goで各種外部パッケージを取得

C:\Users\xxx> cd src\github.com\ethereum\go-ethereum
C:\Users\xxx> go get -u -v golang.org/x/net/context

goでGethの実行ファイルを作成

C:\Users\xxx\src\github.com\ethereum\go-ethereum> go install -v ./cmd/...

Gethが正常にインストールされたか確認

コマンドプロンプトで「geth help」を実行し、Gethの情報(NAME、USAGE、VERSIONなど)が表示されればOKです。

C:\>geth help

NAME:
   geth - the go-ethereum command line interface

   Copyright 2013-2018 The go-ethereum Authors

USAGE:
   geth [options] command [command options] [arguments...]

VERSION:
   1.8.17-unstable