半年振りにBazelをインストール

概要

BazelがAndroidのビルドに対応してから試せていないので試したいが、Bazelは半年前にインストールしたままなので、新しくインストールし直してみる。

Bazelのインストール

http://bazel.io/docs/install.htmlを参考にインストールする。UbuntuのバージョンはTrusty (14.04 LTS)を使う。

コンテナの用意

DockerでUbuntuにコンテナを用意する。

$ docker run -i -t --dns=8.8.8.8 ubuntu /bin/bash

Java8のインストール

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer

Bazelのインストール

Bazelのインストーラーをダウンロードしてくる。

$ wget https://github.com/bazelbuild/bazel/releases/download/0.1.1/bazel-0.1.1-installer-linux-x86_64.sh

実行権限を付与する。

$ chmod +x bazel-0.1.1-installer-linux-x86_64.sh

インストーラーを実行。

$ ./bazel-0.1.1-installer-linux-x86_64.sh --user

unzipが無いと言われるのでapt-getでインストールする。

$ apt-get install unzip

もう一度インストーラーを実行。

$ ./bazel-0.1.1-installer-linux-x86_64.sh --user

PATHを通す

$ export PATH="$PATH:$HOME/bin"

インストールできた。

$ bazel --version
Unknown Bazel startup option: '--version'.
  For more info, run 'blaze help startup_options'.
root@3160f1802c6b:~# bazel version
Build label: 0.1.1
Build target: bazel-out/local_linux-fastbuild/bin/src/main/java/bazel-main_deploy.jar
Build time: Thu Oct 15 20:15:14 2015 (1444940114)
Build timestamp: 1444940114
Build timestamp as int: 1444940114

半年前より簡単にインストールできた。

Bazelのインストール手順をDockerfileにまとめる

手動でBazelのインストールを行ったが、Dockerfileを書き自動化してみる。最終的に以下のようになった。

FROM ubuntu:14.04

ENV DEBIAN_FRONTEND noninteractive

# install Java8
RUN sudo apt-get -y install software-properties-common \
  && sudo add-apt-repository -y ppa:webupd8team/java \
  && sudo apt-get -y update \
  && sudo apt-get -y install oracle-java8-installer

# download bazel installer
RUN sudo apt-get -y install wget \
  && wget https://github.com/bazelbuild/bazel/releases/download/0.1.1/bazel-0.1.1-installer-linux-x86_64.sh

# install bazel
RUN sudo apt-get -y install unzip \
  && sudo chmod +x bazel-0.1.1-installer-linux-x86_64.sh \
  && sudo ./bazel-0.1.1-installer-linux-x86_64.sh --user \
  && export PATH="$PATH:$HOME/bin"

docker buildコマンドでimageをビルドする。

$ docker build -t horie1024/bazel:0.1.1 .

これでbazelがインストールされたimageを作成できる。

Java8のライセンス承諾でつまづく

デフォルトだとJava8のライセンスを承諾する際にdebconfが起動してしまい、docker buildに失敗した。環境変数DEBIAN_FRONTENDにnoninteractiveを設定するとdebconfを起動しないようになり回避できた。

$ ENV DEBIAN_FRONTEND noninteractive

参考

java - docker java7 install fail - Stack Overflow