Dec.10.2015 - 追記
consul 0.6.0 が正式にリリースされましたが、バイナリ配布に ARM Linux が加わりました。
Raspberry Pi で動作させたいだけなら以下の手順は不要となっています。
自前サーバー群を consul にて管理し始めたので Raspberry Pi にも consul を入れたいと思いました。
ですが、Hashicorp でのバイナリ配布では ARM Linux がないのでソースコードからのビルドとなってしまいます。
RaspberryPi 版を作製するには下記の記事が大変参考になります。
「ARM版ConsulをAndroidスマートフォンなどで動作させる」
http://qiita.com/qb0c80aE/items/fb337ef46fc904a8f941
上記記事での consul は 0.5.0 なのですが、最新のコードをリポジトリから取得すると 0.6.0 RC2 となってしまいます。(2015/12/08 現在)
この 0.6.0 でのビルド事情が大分変わっているのでその修正分を記録しておこうというのが今回の記事となります。
consul 0.6.0 のビルドで変わるところ
- golang 1.5 以上が必須となります
- golang 1.5 のビルドには golang 1.4 以上が必須となります
- Raspbian のパッケージだと golang 1.3.3 なのでこれに頼らず自分で golang をビルドすることになります
- golang 1.5 のクロスコンパイルはよくできているので、x64 の Linux 上でビルドが可能です
- RaspberryPi でビルドするよりはるかに早く終わらせることができます
よって手順としては x86_64 の Linux 上で
- golang 1.4 を gcc でビルド
- golang 1.5 を 1.4 でビルド
- consul のソースを github から clone
- consul を golang 1.5 でビルド
- golang のクロスコンパイラの種別分全部がクロスコンパイルされるので ARM Linux 版を RaspberryPi に転送して使用
とやるのがお勧めとなります。
手順
golang 1.4 のソースコードをクローンします
git clone -b release-branch.go1.4 https://go.googlesource.com/go $HOME/go1.4
ソースディレクトリに入りビルドを開始します
cd go1.4/src/
./make.bash
golang 1.5 のソースコードを取得します
wget https://storage.googleapis.com/golang/go1.5.2.src.tar.gz
tar xvf go1.5.2.src.tar.gz
mv go go1.5
ソースディレクトリに入りビルドを開始します
cd go1.5/src/
./make.bash
go1.5 の bin にパスを通し、GOPATH を設定します
echo "PATH=\$PATH:\$HOME/go1.5/bin" >> ~/.bashrc
echo "PATH=\$PATH:\$HOME/go/bin" >> ~/.bashrc
echo "export GOPATH=$HOME/go" >> ~/.bashrc
mkdir go
source ~/.bashrc
src ディレクトリを準備し、consul のソースコードを clone します
cd $GOPATH
mkdir -p src/github.com/hashicorp/
cd src/github.com/hashicorp/
git clone https://github.com/hashicorp/consul.git
consul をビルドします
zipコマンドを使うのでインストールしておいてください
cd consul/
make
ビルド完了後 pkg ディレクトリに各環境用バイナリができているので必要なものをコピーします。