Bazel Install
Reference:
1. 安装Bazel
我们有两种方式来安装Bazel:可以使用官方推荐的Bazelisk来安装,也可以到Release下载对应的Bazel二进制文件来安装。
1.1 直接下载Bazel二进制文件安装
我们可以到Bazel Releases页面下载。这里针对我们的Ubuntu操作系统下载如下文件即可:
# wget https://github.com/bazelbuild/bazel/releases/download/8.0.0rc6/bazel-8.0.0rc6-installer-linux-x86_64.sh # chmod 777 ./bazel-8.0.0rc6-installer-linux-x86_64.sh # ./bazel-8.0.0rc6-installer-linux-x86_64.sh
1.2 采用bazelisk安装bazel
bazelisk采用golang编写,是对bazel的一个包装。它可以自动的为当前工作目录选择一个合适的Bazel版本,然后有必要的话就从官方网站上进行下载,并将传递给bazelisk的命令转发到bazel上。
bazelisk官网: https://github.com/bazelbuild/bazelisk
这里我们简单记录一下bazelisk的安装过程。
1) 下载bazelisk
到bazelisk release页面下载bazelisk安装包。这里我们下载linux-amd64
版本:
# uname -p x86_64 # cd /usr/local/ # mkdir bazel && cd bazel # wget https://github.com/bazelbuild/bazelisk/releases/download/v1.24.1/bazelisk-linux-amd64 # chmod 777 ./bazelisk-linux-amd64
2) 为bazelisk-linux-amd64创建软连接
因为我们使用的使用都是直接输入bazel
或bazelisk
命令,因此我们在这里为步骤1)下载的二进制文件创建两个软连接:
# pwd /usr/local/bazel # ln -sf ./bazelisk-linux-amd64 bazel # ln -sf ./bazelisk-linux-amd64 bazelisk
3) 为bazelisk安装目录添加到环境变量
修改~/.bashrc
文件,将bazelisk安装目录添加到环境变量:
export BAZELROOT=/usr/local/bazel
export PATH=$PATH:$BAZELROOT
记得修改完后执行source ~/.bashrc
使设置生效。
4) 指定bazel版本
由于下载下来的bazelisk只是bazel的一个包装壳,我们直接执行bazelisk-linux-amd64
的话可能会卡很长时间。下面我们来介绍一下bazelisk选择Bazel版本的内部算法:
-
如果指定了
USE_BAZEL_VERSION
环境变量,那么bazelisk会使用该环境变量所指定的bazel版本 -
否则,假如当前workspace的根目录下存在
.bazeliskrc
文件并且在其中通过USE_BAZEL_VERSION
变量指定了bazel版本的话,那么就使用该版本的bazel -
否则,假如当前目录或者递归的父目录中存在
.bazelversion
,bazelisk就会尝试读取该文件并使用其指定版本的bazel -
否则,假如环境变量
USE_BAZEL_FALLBACK_VERSION
指定了的话,就使用该环境变量所设置的bazel。设置格式如下:-
假如所设置的值以
error:
开头,则在使用bazelisk时会报告一个错误,并且不去探测所设定版本的bazel -
假如所设置的值以
warn:
开头,那么在使用bazelisk时就会产生一个警告信息,并且使用其所指定版本的bazel -
假如所设置的值以
silent:
开头,那么bazelisk就会使用其所指定版本的bazel
-
-
否则,bazelisk会使用官方最新的Bazel版本
根据上面的描述,如果我们有workspace的话我们倾向于通过.bazeliskrc
来指定;如果作为学习,在命令行中使用的话,我们倾向于通过USE_BAZEL_FALLBACK_VERSION
环境变量来指定。这里我们修改~/.bashrc
文件,添加如下内容:
export USE_BAZEL_FALLBACK_VERSION=warn:8.0.0rc6
执行如下命令使环境变量生效:
# source ~/.bashrc
5) 执行bazel(或bazelisk)命令,查看版本号
到此步骤我们就可以执行如下命令查看bazel的版本号了:
# bazel --version 2024/12/04 00:27:40 Warning: used fallback version "8.0.0rc6" 2024/12/04 00:27:40 Downloading https://releases.bazel.build/8.0.0/rc6/bazel-8.0.0rc6-linux-x86_64... Downloading: 61 MB out of 61 MB (100%) bazel 8.0.0rc6 # ls bazel bazelisk bazelisk-linux-amd64
通过上面的执行过程,我们看到第一次执行的时候bazelisk会从类似https://github.com/<FORK>/bazel/releases/download/<VERSION>/<FILENAME>
的位置去下载指定版本的bazel。
整个安装过程到此就完成了,但是还有个点我们简单介绍一下:bazelisk下载下载下来的指定版本的bazel放在什么位置呢?其实在官网中也有描述:
It creates a directory called “bazelisk” inside your user cache directory and will store them there. Feel free to delete this directory at any time, as it can be regenerated automatically when required.
这里在Linux操作系统下的cache目录为~/.cache
:
# ls ~/.cache bazelisk Microsoft motd.legal-displayed vscode-cpptools # tree ~/.cache/bazelisk/ /root/.cache/bazelisk/ └── downloads ├── metadata │ └── bazelbuild │ └── bazel-8.0.0rc6-linux-x86_64 ├── sha256 │ └── db6de55999ddbbf28215eddfb19b7d0f688a42945193887048183bd5d3e991d9 │ └── bin │ └── bazel └── _tmp 7 directories, 2 files