Bazelisk で Batfish をソースコードからビルドする
Batfish をビルドする手順は Building and running Batfish service に記載されています。 今回は Ubuntu 22.04LTS 上で実際に Batfish をビルドする手順をメモしておきます。
Bazelisk のインストール¶
Batfish のビルドには Bazel を利用します。 ただ、適切なバージョンの Bazel を用意するのは手間なので、Bazel のバージョンマネージャである Bazelisk を利用します。 Bazelisk は Go 言語で書かれており、ビルド済みバイナリが配布されている為、ダウンロードしたバイナリを適切なパスに配置し、実行権限を付与するだけでインストールは完了です。
1 2 |
|
Java 11 JDK のインストール¶
Batfish 自身は Java で書かれています。 Ubuntu 22.04LTS であれば標準リポジトリから簡単にインストール可能です。
1 |
|
Batfish のビルド¶
後は GitHub から Batfish のソースコードを取得し、bazel でビルドします。
1 2 3 |
|
但し、今回は 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 |
|