HyperledgerをUbuntu上でビルドする

公式ドキュメントが色々と不親切なので書いておく。

ちなみに公式はこちら。
Prerequisites — hyperledger-fabricdocs master documentation

VMにUbuntu16をインストールする

インストール方法はISOイメージダウンロードしてマウントするだけなので省略します。余計なパッケージはインストールせず、素の状態でいれます。
インストール後、起動したらapt-geet updateに失敗するので、

$ sudo apt-get upgrade
$ sudo reboot

rootパスワードを設定する

Hyperledgerのビルドはrootじゃないと失敗するっぽいので。

$ sudo su -
# sudo passwd root

パスワードを設定する。

必要なパッケージをインストールする

とりあえずいれとくやつ

$ sudo apt-get install vim build-essential git ssh

Goをインストールする

Getting Started - The Go Programming Language

Goの公式を見に行くほうが早いが。ひとまず公式からアーカイブファイル(tar.gz)をダウンロードする。

$ tar -C /usr/local -xvzf go1.9.linux-amd64.tar.gz
$ ls /usr/local/go/bin

あればOK。パスを設定する

vi ~/.bashrc

でひらいて末尾に

export GOPATH=/home/ユーザ名/go_root
export GOROOT=/usr/local/go
export PATH=$PATH:/usr/local/go/bin

と記述して保存。rootでも同じ事をするのを忘れないように。

その後、

$ mkdir -p ~/go_root
$ source ~/.bashrc

GOはこれでおわり。

Docker CEをインストールする

Dockerはちゃんとドキュメント書いてくれてるのでその通りすればいい。

$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-exra-virtual
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg  | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88

問題ないことを確認する

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker..com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update

レポジトリ追加したらupdateを忘れない。

$ sudo apt-get install docker-ce
$ sudo docker run hello-world

エラーが出なければOK

docker-composeをインストール

$ sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version

1.16.1って表示されればOK。

pipをインストールする

Installation — pip 9.0.1 documentation
この通りやれば問題ない。
get-pip.pyをダウンロードする。

$ sudo apt-get install python python-dev python3-dev
$ sudo python get-pip.py

書き込む場所的にsudoつけないとだめみたい。

PIPから必要なパッケージをインストールする

$ sudo pip install --upgrade
$ sudo pip install behave nose
$ sudo pip install -I flask==0.10.1 python-dateutil==2.2 pytz==2014.3 pyyaml==3.10 couchdb==1.0 flask-cors==2.0.1 requests==2.4.3 pyOpenSSL==16.2.0 pysha3==1.0b1 grpcio==1.0.4

python-dev, python3-devをインストールしてないとここでエラーが出るので注意。

Hyperledgerのソースコードをビルドする

$ mkdir -p $GOPATH/src/github.com/hyperledger
$ cd $GOPATH/src/github.com/hypkerledger
$ git clone https://github.com/hyperledger/fabric.git

ほんとはGerritからクローンしたいのだが、Linux Foundation IDがなぜかEmptyになってしまっておりできない…なのでReadonlyのレポジトリから取得。

$ cd fabric

ここからはroot権限で実行する

$ su -p
$ make dist-clean all


Apache-2.0ライセンスがどうのこうのというエラーが出る場合は

$ make dist-clean peer orderer peer-docker orderer-docker tools-docker configtxgen cryptogen

でやる。詳しくは
stackoverflow.com

最後に忘れずにパスを追加する

fabric/build/binの下に色々できているのでPATHに追加する。.bashrcに追加するのが早いと思う

export PATH=$PATH:/usr/local/go/bin:$GO_PATH/src/github.com/hyperledger/fabric/build/bin