layout: documentation title: Installing Bazel

Installing Bazel

See the instructions for installing Bazel on:

For other platforms, you can try to compile from source.

Required Java version:

Java JDK 8 or later is required. To address the problem of JDK 8 not being available on some machines, Bazel's binary installer embeds a JDK by default.

Note: Homebrew and Debian packages do not contain the embedded JDK. The shell installers are the only ones with an embedded JDK.

Extras:

For more information on using Bazel, see Getting Started with Bazel.

Getting bash completion

Note: If you installed Bazel using the custom APT repository, the bash completion script is already installed in /etc/bash_completion.d.

Bazel comes with a bash completion script, which the installer copies into the bin directory. If you ran the installer with --user, this will be $HOME/.bazel/bin. If you ran the installer as root, this will be /usr/local/bazel/bin.

Copy the bazel-complete.bash script to your completion folder (/etc/bash_completion.d directory under Ubuntu). If you don't have a completion folder, you can copy it wherever suits you and insert source /path/to/bazel-complete.bash in your ~/.bashrc file (under OS X, put it in your ~/.bash_profile file).

If you built Bazel from source, the bash completion target is in the //scripts package:

  1. Build it with Bazel: bazel build //scripts:bazel-complete.bash.
  2. Copy the script bazel-bin/scripts/bazel-complete.bash to one of the locations described above.

Getting zsh completion

Bazel also comes with a zsh completion script. To install it:

  1. Add this script to a directory on your $fpath:

    fpath[1,0]=~/.zsh/completion/
    mkdir -p ~/.zsh/completion/
    cp scripts/zsh_completion/_bazel ~/.zsh/completion
    

    You may have to call rm -f ~/.zcompdump; compinit the first time to make it work.

  2. Optionally, add the following to your .zshrc.

    # This way the completion script does not have to parse Bazel's options
    # repeatedly.  The directory in cache-path must be created manually.
    zstyle ':completion:*' use-cache on
    zstyle ':completion:*' cache-path ~/.zsh/cache