最稳妥的安装方式是使用官方 apt 仓库:先装 curl、gnupg 等依赖,再导入 GPG 密钥到 /etc/apt/trusted.gpg.d/,添加 deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk11 源,最后 sudo apt update && sudo apt install bazel。

直接装 bazel 最稳妥的方式是用官方 apt 仓库,而不是手动下载 sh 安装包——后者在现代 Linux(尤其是 Ubuntu 22.04+ / Debian 12+)上容易因 JDK 版本、glibc 兼容性或权限问题失败。
用 apt 安装 bazel(推荐方式)
这是目前最省心、升级最顺的路径,尤其适合日常开发和 CI 环境。
- 先装必要依赖:
sudo apt install curl gnupg ca-certificates - 导入 GPG 密钥(注意路径是
/etc/apt/trusted.gpg.d/,不是旧文档写的/usr/share/keyrings/):curl -fsSL https://bazel.build/bazel-release.pub.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/bazel.gpg - 添加源(
stable分支默认绑定 JDK 11,不是 jdk1.8):echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk11" | sudo tee /etc/apt/sources.list.d/bazel.list - 更新并安装:
sudo apt update && sudo apt install bazel - 验证:
bazel --version应输出类似bazel 6.4.0(当前最新稳定版)
手动运行 installer-sh 脚本的坑
你搜到的 bazel-0.24.1-installer-linux-x86_64.sh 这类老版本脚本,现在基本不能用。
通过 SerpApi 查询 Google Flights,获取航班时刻表、价格及舱位等级信息。当用户询问航班 / 机票 / 航班价格、时刻表或对比信息时使用。
- 它硬依赖
java-8-openjdk-amd64,而 Ubuntu 22.04+ 默认不带 JDK 8,装了也大概率触发UnsupportedClassVersionError - 脚本会把二进制写死到
/usr/local/bin/bazel,但没处理~/.bazelrc或/etc/bazel.bazelrc的默认配置,后续执行bazel build可能卡在 sandbox 启动失败 - 没有自动注册
bazelisk兼容层,遇到BUILD文件里声明了build --host_javabase=@local_jdk//:jdk就容易报no such package '@local_jdk//' - 如果你非得用旧版(比如要复现某个遗留构建环境),务必先
sudo apt install openjdk-8-jdk,再用./bazel-*.sh --user装到 home 目录,避免污染系统路径
安装后必须检查的三件事
装完 bazel 不等于能立刻构建项目,很多问题出在初始化环节。
- 确认
JAVA_HOME指向的是 apt 安装的 JDK(如/usr/lib/jvm/java-11-openjdk-amd64),不是你自己解压的 JDK;否则bazel info release会报Failed to determine Java version - 检查
~/.bazelrc是否存在且内容干净——某些 IDE 插件(如 VS Code Bazel 插件)会悄悄写入无效startup配置,导致bazel version直接退出 - 首次运行
bazel build //...前,先跑一次bazel clean --expunge,清掉可能残留的旧版本缓存,否则可能复用错误的external/local_jdk符号链接
真正麻烦的从来不是“怎么装”,而是装完之后 bazel query 返回空、bazel run 找不到 target、或者 --sandbox_debug 下看到一堆 Permission denied ——这些基本都卡在 JDK 绑定、workspace 根识别、或用户 namespace 权限上,而不是安装步骤本身。










