Project: /_project.yaml Book: /_book.yaml
{% include “_buttons.html” %}
This page describes the options for installing Bazel on Ubuntu. It also provides links to the Bazel completion scripts and the binary installer, if needed as a backup option (for example, if you don't have admin access).
Supported Ubuntu Linux platforms:
Bazel should be compatible with other Ubuntu releases and Debian “stretch” and above, but is untested and not guaranteed to work.
Install Bazel on Ubuntu using one of the following methods:
Note: For Arm-based systems, the APT repository does not contain an arm64
release, and there is no binary installer available. Either use Bazelisk or compile from source.
Bazel comes with two completion scripts. After installing Bazel, you can:
Note: This is a one-time setup step.
sudo apt install apt-transport-https curl gnupg 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
The component name “jdk1.8” is kept only for legacy reasons and doesn't relate to supported or included JDK versions. Bazel releases are Java-version agnostic. Changing the “jdk1.8” component name would break existing users of the repo.
sudo apt update && sudo apt install bazel
Once installed, you can upgrade to a newer version of Bazel as part of your normal system updates:
sudo apt update && sudo apt full-upgrade
The bazel
package always installs the latest stable version of Bazel. You can install specific, older versions of Bazel in addition to the latest one, such as this:
sudo apt install bazel-1.0.0
This installs Bazel 1.0.0 as /usr/bin/bazel-1.0.0
on your system. This can be useful if you need a specific version of Bazel to build a project, for example because it uses a .bazelversion
file to explicitly state with which Bazel version it should be built.
Optionally, you can set bazel
to a specific version by creating a symlink:
sudo ln -s /usr/bin/bazel-1.0.0 /usr/bin/bazel bazel --version # 1.0.0
Bazel includes a private, bundled JRE as its runtime and doesn't require you to install any specific version of Java.
However, if you want to build Java code using Bazel, you have to install a JDK.
# Ubuntu 16.04 (LTS) uses OpenJDK 8 by default: sudo apt install openjdk-8-jdk # Ubuntu 18.04 (LTS) uses OpenJDK 11 by default: sudo apt install openjdk-11-jdk
Generally, you should use the apt repository, but the binary installer can be useful if you don‘t have admin permissions on your machine or can’t add custom repositories.
The binary installers can be downloaded from Bazel's GitHub releases page{: .external}.
The installer contains the Bazel binary and extracts it into your $HOME/bin
folder. Some additional libraries must be installed manually for Bazel to work.
Bazel needs a C++ compiler and unzip / zip in order to work:
sudo apt install g++ unzip zip
If you want to build Java code using Bazel, install a JDK:
# Ubuntu 16.04 (LTS) uses OpenJDK 8 by default: sudo apt-get install openjdk-8-jdk # Ubuntu 18.04 (LTS) uses OpenJDK 11 by default: sudo apt-get install openjdk-11-jdk
Next, download the Bazel binary installer named bazel-{{ '<var>' }}version{{ '</var>' }}-installer-linux-x86_64.sh
from the Bazel releases page on GitHub{: .external}.
Run it as follows:
chmod +x bazel-{{ '<var>' }}version{{ '</var>' }}-installer-linux-x86_64.sh ./bazel-{{ '<var>' }}version{{ '</var>' }}-installer-linux-x86_64.sh --user
The --user
flag installs Bazel to the $HOME/bin
directory on your system and sets the .bazelrc
path to $HOME/.bazelrc
. Use the --help
command to see additional installation options.
If you ran the Bazel installer with the --user
flag as above, the Bazel executable is installed in your $HOME/bin
directory. It's a good idea to add this directory to your default paths, as follows:
export PATH="$PATH:$HOME/bin"
You can also add this command to your ~/.bashrc
or ~/.zshrc
file to make it permanent.