Bazel のインストール(Ubuntu 24.04, 22.04 上)

Bazel は,ビルドとテストを行うためのツールである(make, Maven, Gradle と同種のもの).C++, Java, Android, iOS, Go, Python などのビルドに対応する. ビルド結果のキャッシュと再現性のあるビルドを特徴とする.

Bazel 8 以降では,外部依存関係の管理方式が従来の WORKSPACE 方式から BzlmodMODULE.bazel ファイル)に移行しており,Bazel 9 では WORKSPACE 方式は削除された.本ページは MODULE.bazel を用いる手順で記述する.

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。

Ubuntu のインストールはこちらの別ページで説明する。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now

curl, gnupg, apt-transport-https のインストール

Bazel の APT リポジトリを登録するために必要である. 端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install curl gnupg apt-transport-https

C/C++ コンパイラと Make とビルドツールのインストール

Bazel が C/C++ のビルドを行うときに使用する. インストールするには,端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install build-essential gcc g++ make zip unzip libtool texinfo dpkg-dev pkg-config

Bazel のインストール手順(APT リポジトリを使用)

公式の手順は https://bazel.build/install/ubuntu に記載されている.

  1. 署名鍵の登録とリポジトリの追加

    端末で,次のコマンドを実行する.

    curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel-archive-keyring.gpg
    sudo mv bazel-archive-keyring.gpg /usr/share/keyrings
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/bazel-archive-keyring.gpg] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
    
    リポジトリ名に含まれる jdk1.8 は過去の互換性のために残されている名称であり,インストールされる Bazel が使用する Java のバージョンとは関係しない.

    この APT リポジトリは amd64 のみを提供する.Arm 系(arm64)の環境では,後述の Bazelisk を使用する.

  2. Bazel のインストール

    端末で,次のコマンドを実行する.

    sudo apt update
    sudo apt -y install bazel
    

    bazel パッケージは,その時点の最新の安定版がインストールされる.以降は通常のシステム更新(sudo apt full-upgrade)で更新される.

  3. バージョンの確認

    端末で,次のコマンドを実行する.

    bazel --version
    

Bazelisk を使用する場合

Bazelisk は,プロジェクトの .bazelversion ファイルの記述に従って適切なバージョンの Bazel を自動的にダウンロードして実行するランチャーである.公式ドキュメントでは Bazelisk の使用が推奨されている.また,arm64 環境では APT リポジトリが利用できないため,Bazelisk が選択肢となる.

インストールするには,端末で,次のコマンドを実行する(x86_64 の場合.arm64 の場合は bazelisk-linux-arm64 に読み替える).

curl -fsSL -o bazelisk https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64
chmod +x bazelisk
sudo mv bazelisk /usr/local/bin/bazel
bazel --version
APT リポジトリ版の Bazel と Bazelisk を同じ名前(bazel)で併用すると,どちらが実行されるかが PATH の順序に依存する.どちらか一方を使用する.

動作チェック

https://bazel.build/start/ の記載に沿って,最小構成のビルドで動作を確認する.

  1. 作業用ディレクトリを作成し,MODULE.bazel ファイルを作成する

    MODULE.bazel ファイルが置かれたディレクトリが,Bazel のワークスペースのルートとして認識される. 端末で,次のコマンドを実行する.

    mkdir -p /tmp/bazel-test
    cd /tmp/bazel-test
    touch MODULE.bazel
    
  2. 「BUILD」という名前のファイルを次の内容で作成する
    genrule(
      name = "hello",
      outs = ["hello_world.txt"],
      cmd = "echo Hello World > $@",
    )
    
  3. ビルドを実行する

    端末で,次のコマンドを実行する.

    bazel build :hello
    
  4. 生成物を確認する

    ビルド結果は,ワークスペース直下の bazel-bin ディレクトリに置かれる. 端末で,次のコマンドを実行する.「Hello World」と表示されれば,動作している.

    cat bazel-bin/hello_world.txt