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

2,将源码包上传至开发环境并解压。
3,执行解压后的./compile.sh脚本,等待一段时间后,出现错误:

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)

 

posted @ 2023-03-07 19:06  strongbug1  阅读(668)  评论(0编辑  收藏  举报