本頁說明如何從來源安裝 Bazel,並提供常見問題的疑難排解訣竅。
如要從來源建構 Bazel,請執行下列任一操作:
不使用現有的 Bazel 二進位檔建構,這稱為自舉。
使用 Bazel 建構 Bazel
摘要
從 GitHub 版本頁面或使用 Bazelisk,取得最新版 Bazel。
從 GitHub 下載 Bazel 來源,並解壓縮至某處。或者,您也可以從 https://github.com/bazelbuild/bazel 複製來源樹狀結構
安裝與啟動程序相同的必要項目 (請參閱適用於類 Unix 系統的必要項目或適用於 Windows 的必要項目)
使用 Bazel 建構 Bazel 的開發版本:
bazel build //src:bazel-dev
(或 Windows 上的bazel build //src:bazel-dev.exe
)產生的二進位檔位於
bazel-bin/src/bazel-dev
(或 Windows 上的bazel-bin\src\bazel-dev.exe
)。您可以將其複製到任何位置,並立即使用,無須進一步安裝。
詳細操作說明如下。
步驟 1:取得最新版 Bazel
目標:安裝或下載 Bazel 的發布版本。請在終端機中輸入 bazel
,確認可以執行。
原因:如要從 GitHub 來源樹狀結構建構 Bazel,您需要預先存在的 Bazel 二進位檔。您可以透過套件管理員安裝,或從 GitHub 下載。請參閱「安裝 Bazel」。(或者,您也可以從頭開始建構 (啟動)。)
疑難排解:
如果無法在終端機中輸入
bazel
來執行 Bazel:可能是因為 Bazel 二進位檔的目錄不在 PATH 中。
這並非大問題。您必須輸入完整路徑,而不是
bazel
。或許 Bazel 二進位檔本身並非稱為
bazel
(在 Unix 上) 或bazel.exe
(在 Windows 上)。這並非大問題。您可以重新命名二進位檔,或輸入二進位檔的名稱,取代
bazel
。二進位檔可能無法執行 (在 Unix 上)。
您必須執行
chmod +x /path/to/bazel
,讓二進位檔可執行。
步驟 2:從 GitHub 下載 Bazel 來源
如果您熟悉 Git,只要執行 git clone https://github.com/bazelbuild/bazel 即可
如果是其他情況:
以 ZIP 檔案格式下載最新來源。
將內容解壓縮到某個位置。
舉例來說,您可以在主目錄下建立
bazel-src
目錄,然後解壓縮至該處。
步驟 3:安裝必要條件
安裝與啟動程序相同的必要條件 (請參閱下文) - JDK、C++ 編譯器、MSYS2 (如果您在 Windows 上建構) 等。
步驟 4a:在 Ubuntu Linux、macOS 和其他類似 Unix 的系統上建構 Bazel
如需 Windows 的操作說明,請參閱「在 Windows 上建構 Bazel」。
目標:執行 Bazel,建構自訂 Bazel 二進位檔 (bazel-bin/src/bazel-dev
)。
操作說明:
啟動 Bash 終端機
cd
進入您解壓縮 (或複製) Bazel 來源的目錄。舉例來說,如果您將來源解壓縮至主目錄,請執行下列指令:
cd ~/bazel-src
從來源建構 Bazel:
bazel build //src:bazel-dev
或者,您也可以執行
bazel build //src:bazel --compilation_mode=opt
,產生較小的二進位檔,但建構速度較慢。您可以使用
--stamp --embed_label=X.Y.Z
旗標建構,將 Bazel 版本嵌入二進位檔,這樣bazel --version
就會輸出指定版本。輸出內容會位於
bazel-bin/src/bazel-dev
(或bazel-bin/src/bazel
)。
步驟 4b:在 Windows 上建構 Bazel
如需 Unix 類似系統的操作說明,請參閱Ubuntu Linux、macOS 和其他 Unix 類似系統。
目標:執行 Bazel,建構自訂 Bazel 二進位檔 (bazel-bin\src\bazel-dev.exe
)。
操作說明:
啟動命令提示字元 (依序點選「開始」選單 >「執行」> 輸入「cmd.exe」)
cd
進入您解壓縮 (或複製) Bazel 來源的目錄。舉例來說,如果您將來源解壓縮至主目錄,請執行下列指令:
cd %USERPROFILE%\bazel-src
從來源建構 Bazel:
bazel build //src:bazel-dev.exe
或者,您也可以執行
bazel build //src:bazel.exe --compilation_mode=opt
來產生較小的二進位檔,但建構速度較慢。您可以使用
--stamp --embed_label=X.Y.Z
旗標建構,將 Bazel 版本嵌入二進位檔,這樣bazel --version
就會輸出指定版本。輸出內容會位於
bazel-bin\src\bazel-dev.exe
(或bazel-bin\src\bazel.exe
)。
步驟 5:安裝建構的二進位檔
其實不需要安裝任何東西。
上一個步驟的輸出內容是獨立的 Bazel 二進位檔。您可以將其複製到任何目錄,並立即使用。(如果該目錄位於 PATH 中,您就能在任何位置執行「bazel」,這非常實用)。
從頭開始建構 Bazel (啟動程序)
您也可以從頭建構 Bazel,不必使用現有的 Bazel 二進位檔。
步驟 1:下載 Bazel 的來源 (發布封存檔)
(這個步驟適用於所有平台)。
從 GitHub 下載
bazel-<version>-dist.zip
,例如bazel-0.28.1-dist.zip
。吸引注意力:
- 只有一個與架構無關的發布封存檔。 沒有架構專用或 OS 專用的發布封存檔。
- 這些來源與 GitHub 來源樹狀結構不同。您必須使用發布封存檔啟動 Bazel。您無法使用從 GitHub 複製的來源樹狀結構。(發布封存檔包含啟動所需的產生來源檔案,這些檔案不屬於正常的 Git 來源樹狀結構)。
將發布封存檔解壓縮至磁碟上的某個位置。
您應驗證 Bazel 的發布金鑰 3D5919B448457EE0 所建立的簽章。
步驟 2a:在 Ubuntu Linux、macOS 和其他類似 Unix 的系統上啟動 Bazel
如需 Windows 的操作說明,請參閱「在 Windows 上啟動 Bazel」。
2.1. 安裝必要項目
Bash
zip、unzip
C++ 建構工具鍊
JDK。必須使用第 21 版。
Python。系統支援第 2 版和第 3 版,安裝其中一個版本即可。
舉例來說,在 Ubuntu Linux 上,您可以使用下列指令安裝這些必要條件:
sudo apt-get install build-essential openjdk-21-jdk python zip unzip
2.2. 在 Unix 上啟動 Bazel
開啟殼層或終端機視窗。
cd
,前往您解壓縮發行套件封存檔的目錄。執行編譯指令碼:
env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh
。
編譯後的輸出內容會放入 output/bazel
。這是獨立的 Bazel 二進位檔,不含嵌入式 JDK。你可以將其複製到任何位置,或直接使用。為方便起見,請將這個二進位檔複製到 PATH
上的目錄 (例如 Linux 上的 /usr/local/bin
)。
如要以可重現的方式建構 bazel
二進位檔,請在「執行編譯指令碼」步驟中設定 SOURCE_DATE_EPOCH
。
步驟 2b:在 Windows 上啟動 Bazel
如需 Unix 類系統的操作說明,請參閱「在 Ubuntu Linux、macOS 和其他 Unix 類系統上啟動 Bazel」。
2.1. 安裝必要項目
用於壓縮和解壓縮的 MSYS2 套件。在 MSYS2 殼層中執行下列指令:
pacman -S zip unzip patch
Visual C++ 編譯器。安裝 Visual C++ 編譯器,可以安裝 Visual Studio 2015 以上版本,也可以安裝最新版的 Visual Studio 2017 Build Tools。
JDK。必須使用第 21 版。
Python。系統支援第 2 版和第 3 版,安裝其中一個版本即可。您需要 Windows 原生版本 (可從 https://www.python.org 下載)。透過 MSYS2 中的 pacman 安裝的版本無法運作。
2.2. 在 Windows 上啟動 Bazel
開啟 MSYS2 殼層。
設定下列環境變數:
BAZEL_VS
或BAZEL_VC
(兩者不同):設為 Visual Studio 目錄 (BAZEL_VS) 或 Visual C++ 目錄 (BAZEL_VC) 的路徑。設定其中一個即可。BAZEL_SH
:MSYS2bash.exe
的路徑。請參閱下方的範例指令。請勿將此值設為
C:\Windows\System32\bash.exe
。(如果您已安裝適用於 Linux 的 Windows 子系統,就會有這個檔案)。Bazel 不支援這個版本的bash.exe
。PATH
:新增 Python 目錄。JAVA_HOME
:設為 JDK 目錄。
範例 (使用 BAZEL_VS):
export BAZEL_VS="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools" export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))" export PATH="/c/python27:$PATH" export JAVA_HOME="C:/Program Files/Java/jdk-21"
或 (使用 BAZEL_VC):
export BAZEL_VC="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC" export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))" export PATH="/c/python27:$PATH" export JAVA_HOME="C:/Program Files/Java/jdk-21"
cd
,前往您解壓縮發行套件封存檔的目錄。執行編譯指令碼:
env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" ./compile.sh
編譯後的輸出內容會放入 output/bazel.exe
。這是獨立的 Bazel 二進位檔,不含嵌入式 JDK。你可以將其複製到任何位置,或直接使用。為方便起見,請將這個二進位檔複製到 PATH
上的目錄。
如要以可重現的方式建構 bazel.exe
二進位檔,請在「執行編譯指令碼」步驟中設定 SOURCE_DATE_EPOCH
。
您不需要從 MSYS2 殼層執行 Bazel。您可以從命令提示字元 (cmd.exe
) 或 PowerShell 執行 Bazel。