Skip to content

Bazelisk で Batfish をソースコードからビルドする

Batfish をビルドする手順は Building and running Batfish service に記載されています。 今回は Ubuntu 22.04LTS 上で実際に Batfish をビルドする手順をメモしておきます。

Bazelisk のインストール

Batfish のビルドには Bazel を利用します。 ただ、適切なバージョンの Bazel を用意するのは手間なので、Bazel のバージョンマネージャである Bazelisk を利用します。 Bazelisk は Go 言語で書かれており、ビルド済みバイナリが配布されている為、ダウンロードしたバイナリを適切なパスに配置し、実行権限を付与するだけでインストールは完了です。

1
2
curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.15.0/bazelisk-linux-amd64 -o /usr/local/bin/bazel
chmod 755 /usr/local/bin/bazel

Java 11 JDK のインストール

Batfish 自身は Java で書かれています。 Ubuntu 22.04LTS であれば標準リポジトリから簡単にインストール可能です。

1
apt -y install openjdk-11-jdk

Batfish のビルド

後は GitHub から Batfish のソースコードを取得し、bazel でビルドします。

1
2
3
git clone https://github.com/batfish/batfish.git
cd batfish
bazel build //projects/allinone:allinone_main

但し、今回は root ユーザでビルドするとエラーになってしまいました。 標準ユーザであれば問題無くビルドすることが出来ました。

ERROR: An error occurred during the fetch of repository 'python3_9_x86_64-unknown-linux-gnu': Traceback (most recent call last): File "/root/.cache/bazel/_bazel_root/6298ec31e76f50ca22e9293b0aa19a3d/external/rules_python/python/repositories.bzl", line 153, column 25, in _python_repository_impl fail("The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.") Error in fail: The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713. ERROR: /root/batfish/WORKSPACE:86:27: fetching python_repository rule //external:python3_9_x86_64-unknown-linux-gnu: Traceback (most recent call last): File "/root/.cache/bazel/_bazel_root/6298ec31e76f50ca22e9293b0aa19a3d/external/rules_python/python/repositories.bzl", line 153, column 25, in_python_repository_impl fail("The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.") Error in fail: The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713. ERROR: Encountered error while reading extension file 'requirements.bzl': no such package '@pip//': no such package '@python3_9_x86_64-unknown-linux-gnu//': The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.

Batfish の実行

Batfish を実行するには Batfish をビルドしたディレクトリで以下を実行します (バックグラウンドジョブとして実行しています)。

1
./bazel-bin/projects/allinone/allinone_main -runclient false -coordinatorargs "-templatedirs questions" &