---
layout: documentation
title: Installing Bazel
---

# Installing Bazel

See the instructions for installing Bazel on:

*   [Ubuntu Linux (16.04, 15.10, and 14.04)](install-ubuntu.md)
*   [Mac OS X](install-os-x.md)
*   [Windows](install-windows.md)

For other platforms, you can try to [compile from source](install-compile-source.md).

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:

*   [Bash completion](#bash)
*   [zsh completion](#zsh)

For more information on using Bazel, see
[Getting Started with Bazel](getting-started.html).

## <a name="bash"></a>Getting bash completion

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.

## <a name="zsh"></a>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
    ```
