Ubuntu 22.04 安装 Bazel,解决GPG密钥导入失败问题

张开发
2026/4/9 14:59:59 15 分钟阅读

分享文章

Ubuntu 22.04 安装 Bazel,解决GPG密钥导入失败问题
Bazel安装官方网站https://bazel.google.cn/install/ubuntu?eqide7fa38a100027fd200000002645856d3hlde一、准备依赖与添加官方源一次性# 1. 安装基础依赖 sudo apt update sudo apt install apt-transport-https curl gnupg -y # 2. 导入Bazel GPG密钥 curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor bazel-archive-keyring.gpg sudo mv bazel-archive-keyring.gpg /usr/share/keyrings/ # 3. 添加Bazel官方APT源amd64 echo deb [archamd64 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仅为历史保留字段与实际 JDK 版本无关。如果网络问题导致GPG密钥导入失败将上面更换为# 1. 安装依赖确保已装 sudo apt update sudo apt install apt-transport-https curl gnupg -y # 2. 用国内可访问的密钥地址Google存储非bazel.build导入 curl -fsSL https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg | sudo gpg --dearmor -o /usr/share/keyrings/bazel-archive-keyring.gpg # 3. 添加清华Bazel APT源国内最快 echo deb [archamd64 signed-by/usr/share/keyrings/bazel-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/bazel-apt stable jdk1.8 | sudo tee /etc/apt/sources.list.d/bazel.list二、安装 Bazel最新稳定版sudo apt update sudo apt install bazel -y安装指定版本如 6.4.0sudo apt install bazel-6.4.0版本会安装为/usr/bin/bazel-6.4.0bazel软链接指向最新版ln -s /usr/bin/bazel-6.5.0 /usr/local/bin/bazel三、验证安装bazel --version输出示例bazel 8.5.0即成功四、升级 Bazelsudo apt update sudo apt upgrade bazel -ybazel 特性一、Bazel 最大的 4 个核心优势最关键1.自动管理所有依赖不用本地装库不需要手动安装 Protobuf、Eigen、Boost、OpenCV 等不需要配置头文件路径、库路径不需要处理版本冲突所有依赖 Bazel 自动下载、自动编译、自动链接2.构建速度极快缓存 增量编译 分布式编译Bazel 是世界上构建速度最快的构建系统之一。秒级增量编译改一行代码只重新编译这一行跨机器、跨用户共享缓存支持分布式编译几十台机器同时帮你编译大型 C 项目Make/CMake可能要10 分钟Bazel10 秒1 分钟3.多语言统一构建系统一个工具搞定所有语言CJavaGoPythonRustProtobufAndroid / iOS一个项目前后端、客户端、服务端都用同一个 Bazel 构建。4.跨平台、可移植、一次编写到处运行LinuxmacOSWindowsDocker云端编译环境完全相同的一套 BUILD 文件所有平台都能编译。不会出现“我本地能跑服务器不能跑”“Windows 正常Linux 报错”二、Bazel 的核心特性专业但重要1.严格的依赖模型不会出现诡异编译错误Bazel 要求你明确声明所有依赖。好处不会隐式依赖系统文件不会出现 “漏链接库”不会出现 “时好时坏” 的编译问题构建结果 100% 可复现2.真正的沙盒环境干净构建Bazel 在隔离沙盒里编译只能访问你声明的依赖不能偷偷访问系统文件不能访问网络构建结果完全确定这让 C 项目极度稳定。3.自动处理代码生成Protobuf 等如项目中使用protobuf.proto→ 自动生成 C 代码无需手动写脚本无需配置 protoc 路径变更 proto 自动重新生成所有代码生成工具 Bazel 都能完美管理。4.支持超大型代码库单仓模式Google、微软、Meta 都用单仓monorepo几十万源文件几百个模块上千个开发者Bazel 就是为这种巨型项目设计的。5.内置测试支持一行命令跑所有测试bazel test //...自动并行跑测试缓存测试结果自动检测哪些代码变了只重跑受影响的测试三、Bazel vs Make/CMake最直观对比特性Make / CMakeBazel本地安装第三方库必须手动装完全不用增量编译慢、不可靠极快、可靠跨平台麻烦、经常出错简单、一致依赖管理手动配置自动管理构建缓存无强大适合大型项目吃力天生支持环境一致性差极高四、最适合用 Bazel 的场景C 大型项目、机器人、自动驾驶、游戏引擎需要多语言混合C Go Python团队协作希望环境统一不想处理 “编译环境问题”希望项目换一台电脑就能编译

更多文章