ubuntu18.04离线安装Bazel编译工具
Bazel是Google开发的一套编译工具,拥有支持多种开发语言,支持联网下载等很多优先。
最近因环境限制,在一开发环境中离线安装bazel,先记录安装过程。
系统环境:
操作系统:ubuntu 18.04
CPU:ARMv8,64位
编译过程:
前期准备:下载了JDK11,并设置系统环境变量。开发环境自带gcc等编译工具、python。
1,下载bazel源码安装包,本次安装的版本为4.2.2,下载地址:https://github.com/bazelbuild/bazel/releases/tag/4.2.2
下载包为:bazel-4.2.2-dist.zip
ERROR: An error occurred during the fetch of repository 'remotejdk11_linux_aarch64':
Traceback (most recent call last):
File "/tmp/bazel_skwYhjI8/out/external/bazel_tools/tools/build_defs/repo/http.bzl", line 111, column 45, in _http_archive_impl
download_info = ctx.download_and_extract(
Error in download_and_extract: java.io.IOException: Error downloading [https://mirror.bazel.build/openjdk/azul-zulu11.37.48-ca-jdk11.0.6/zulu11.37.48-ca-jdk11.0.6-linux_aarch64.tar.gz] to /tmp/bazel_skwYhjI8/out/external/remotejdk11_linux_aarch64/temp8440956952100203578/zulu11.37.48-ca-jdk11.0.6-linux_aarch64.tar.gz: Unknown host: mirror.bazel.build
错误信息提示为,openjdk11下载失败,并没有使用已安装好的JDK11(在出错之前应该有用到)。
因环境无法联网,所以根据错误提示中的链接地址,自行下载了openjdk11的包并上传至开发环境,并解压openjdk11包(同时保存压缩包和解压后的目录),并将系统环境变量中JAVA_HOME中目录更换为openjdk所在目录,并重新执行source命令。
4,bazel修改内容:
使用命令:grep -r “remotejdk11_linux_aarch64” ./
控制台输出结果为:
nx@nx-desktop:~/apollo/tools/bazel-4.2.2$ grep -r "remotejdk11_linux_aarch64" ./
./src/BUILD: "@remotejdk11_linux_aarch64_for_testing//:WORKSPACE",
./src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE: name = "remotejdk11_linux_aarch64",
./src/test/py/bazel/test_base.py: 'remotejdk11_linux_aarch64_for_testing',
./src/test/shell/testenv.sh: "remotejdk11_linux_aarch64_for_testing"
./WORKSPACE: name = "remotejdk11_linux_aarch64_for_testing",
./tools/jdk/BUILD: "//src/conditions:linux_aarch64": "@remotejdk11_linux_aarch64//:jdk",
根据输出结果发现,./WORKSPACE和./src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE两个文件中有remotejdk11_linux_aarch64的定义。
使用vi依次打开上述两个文件,找到remotejdk11_linux_aarch64所在位置,将库的下载链接换成本地文件:
urls = ["https://mirror.bazel.build/openjdk/azul-zulu11.37.48-ca-jdk11.0.6/zulu11.37.48-ca-jdk11.0.6-linux_aarch64.tar.gz"]
更换为(具体值根据实际路径进行修改):
urls = ["file:////home/test/tools/zulu11.37.48-ca-jdk11.0.6-linux_aarch64.tar.gz"],
两个文件修改完成后,重新执行./compile.sh脚本,一直等待完成即可。
5,编译后bazel可执行文件在output目录下。可将该目录加入到系统PATH环境变量中或者将文件复制到/usr/local/bin目录下。
6,bazel编译安装结束。可以正常使用bazel进行编译了。
感谢链接:
https://docs.bazel.build/versions/5.3.1/install-compile-source.html#bootstrap-bazel Step 2a
https://stackoom.com/question/3zIIW (特别感谢,学会了怎么用本地文件替换url)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具