หน้านี้จะอธิบายวิธีติดตั้ง Bazel จากแหล่งที่มาและให้ เคล็ดลับในการแก้ปัญหาที่พบบ่อย
หากต้องการสร้าง Bazel จากแหล่งที่มา คุณสามารถทำอย่างใดอย่างหนึ่งต่อไปนี้
- สร้างโดยใช้ไบนารี Bazel ที่มีอยู่ 
- สร้าง โดยไม่มีไบนารี Bazel ที่มีอยู่ ซึ่งรู้จักกันในชื่อการเริ่มต้น 
สร้าง Bazel โดยใช้ Bazel
สรุป
- ดาวน์โหลด Bazel เวอร์ชันล่าสุดจากหน้าเวอร์ชันใน GitHub หรือใช้ Bazelisk 
- ดาวน์โหลดแหล่งที่มาของ Bazel จาก GitHub แล้วแตกไฟล์ไว้ที่ใดที่หนึ่ง หรือจะใช้คำสั่ง git clone เพื่อโคลนโครงสร้างแหล่งที่มาจาก https://github.com/bazelbuild/bazel ก็ได้ 
- ติดตั้งข้อกำหนดเบื้องต้นเดียวกันกับการเริ่มต้นระบบ (ดูสำหรับระบบที่คล้าย Unix หรือสำหรับ Windows) 
- สร้างบิลด์การพัฒนาของ Bazel โดยใช้ Bazel ดังนี้ - bazel build //src:bazel-dev(หรือ- bazel build //src:bazel-dev.exeใน Windows)
- ไบนารีที่ได้จะอยู่ที่ - bazel-bin/src/bazel-dev(หรือ- bazel-bin\src\bazel-dev.exeใน Windows) คุณสามารถคัดลอกไปวางที่ใดก็ได้ และใช้งานได้ทันทีโดยไม่ต้องติดตั้งเพิ่มเติม
ดูวิธีการโดยละเอียดได้ที่ด้านล่าง
ขั้นตอนที่ 1: ดาวน์โหลด Bazel เวอร์ชันล่าสุด
เป้าหมาย: ติดตั้งหรือดาวน์โหลด Bazel เวอร์ชันที่เผยแพร่ ตรวจสอบว่าคุณเรียกใช้ได้โดยพิมพ์ bazel ในเทอร์มินัล
เหตุผล: หากต้องการสร้าง Bazel จากซอร์สทรีของ GitHub คุณต้องมีไบนารี Bazel ที่มีอยู่ก่อนแล้ว คุณติดตั้งได้จากตัวจัดการแพ็กเกจหรือดาวน์โหลดจาก GitHub ดูการติดตั้ง Bazel (หรือคุณจะสร้างตั้งแต่ต้น (Bootstrap) ก็ได้)
การแก้ปัญหา:
- หากเรียกใช้ Bazel โดยพิมพ์ - bazelในเทอร์มินัลไม่ได้ ให้ทำดังนี้- ไดเรกทอรีของไบนารี Bazel อาจไม่ได้อยู่ใน PATH - นี่ไม่ใช่ปัญหาใหญ่ คุณจะต้องพิมพ์เส้นทางแบบเต็มแทนการพิมพ์ - bazel
- ไบนารี Bazel เองอาจไม่ได้เรียกใช้ - bazel(ใน Unix) หรือ- bazel.exe(ใน Windows)- นี่ไม่ใช่ปัญหาใหญ่ คุณจะเปลี่ยนชื่อไบนารีหรือพิมพ์ชื่อไบนารีแทน - bazelก็ได้
- ไบนารีอาจเรียกใช้งานไม่ได้ (ใน Unix) - คุณต้องทำให้ไบนารีเรียกใช้งานได้โดยการเรียกใช้ - chmod +x /path/to/bazel
 
ขั้นตอนที่ 2: ดาวน์โหลดแหล่งที่มาของ Bazel จาก GitHub
หากคุ้นเคยกับ Git ให้ใช้คำสั่ง git clone https://github.com/bazelbuild/bazel
กรณีอื่น:
- ดาวน์โหลดแหล่งข้อมูลล่าสุดเป็นไฟล์ ZIP 
- แตกไฟล์เนื้อหาไปยังที่ใดที่หนึ่ง - เช่น สร้างไดเรกทอรี - bazel-srcในไดเรกทอรีบ้านของคุณ แล้ว แตกไฟล์ที่นั่น
ขั้นตอนที่ 3: ติดตั้งข้อกำหนดเบื้องต้น
ติดตั้งข้อกำหนดเบื้องต้นเดียวกันกับการเริ่มต้นระบบ (ดูด้านล่าง) เช่น JDK, คอมไพเลอร์ C++, MSYS2 (หากคุณสร้างใน Windows) เป็นต้น
ขั้นตอนที่ 4ก: สร้าง Bazel ใน Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้าย Unix
โปรดดูวิธีการสำหรับ Windows ที่หัวข้อสร้าง Bazel ใน Windows
เป้าหมาย: เรียกใช้ 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เพื่อให้ได้ไบนารีขนาดเล็กลงก็ได้ แต่จะใช้เวลานานกว่าในการสร้าง
- ผลลัพธ์จะอยู่ที่ - bazel-bin/src/bazel-dev(หรือ- bazel-bin/src/bazel)
ขั้นตอนที่ 4b: สร้าง Bazel บน Windows
ดูวิธีการสำหรับระบบที่คล้าย Unix ได้ที่ Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้าย Unix
เป้าหมาย: เรียกใช้ Bazel เพื่อสร้างไบนารี Bazel ที่กำหนดเอง
(bazel-bin\src\bazel-dev.exe)
วิธีการ
- เริ่ม Command Prompt (เมนูเริ่ม > เรียกใช้ > "cmd.exe") 
- cdไปยังไดเรกทอรีที่คุณแตกไฟล์ (หรือโคลน) แหล่งที่มาของ Bazel- เช่น หากคุณแยกแหล่งที่มาภายใต้ไดเรกทอรีบ้าน ให้เรียกใช้คำสั่งต่อไปนี้ - cd %USERPROFILE%\bazel-src
- สร้าง Bazel จากแหล่งที่มา - bazel build //src:bazel-dev.exe- หรือจะเรียกใช้ - bazel build //src:bazel.exe --compilation_mode=optเพื่อให้ได้ไบนารีที่เล็กลงก็ได้ แต่จะสร้างได้ช้ากว่า
- ผลลัพธ์จะอยู่ที่ - bazel-bin\src\bazel-dev.exe(หรือ- bazel-bin\src\bazel.exe)
ขั้นตอนที่ 5: ติดตั้งไบนารีที่สร้างขึ้น
จริงๆ แล้วคุณไม่ต้องติดตั้งอะไรเลย
เอาต์พุตของขั้นตอนก่อนหน้าคือไบนารี Bazel แบบสแตนด์อโลน คุณสามารถคัดลอก ไปยังไดเรกทอรีใดก็ได้และใช้งานได้ทันที (มีประโยชน์หากไดเรกทอรีนั้นอยู่ใน PATH เพื่อให้คุณเรียกใช้ "bazel" ได้ทุกที่)
สร้าง Bazel ตั้งแต่ต้น (การเริ่มต้น)
นอกจากนี้ คุณยังสร้าง Bazel ตั้งแต่ต้นได้โดยไม่ต้องใช้ไบนารี Bazel ที่มีอยู่
ขั้นตอนที่ 1: ดาวน์โหลดแหล่งที่มาของ Bazel (ที่เก็บถาวรสำหรับการเผยแพร่)
(ขั้นตอนนี้เหมือนกันสำหรับทุกแพลตฟอร์ม)
- ดาวน์โหลด - bazel-<version>-dist.zipจาก GitHub เช่น- bazel-0.28.1-dist.zip- โปรดทราบ - มีที่เก็บการจัดจำหน่ายที่เดียวซึ่งไม่ขึ้นอยู่กับสถาปัตยกรรม ไม่มีไฟล์เก็บถาวรสำหรับการจัดจำหน่ายที่เฉพาะเจาะจงกับสถาปัตยกรรมหรือระบบปฏิบัติการ
- แหล่งข้อมูลเหล่านี้ไม่เหมือนกับโครงสร้างแหล่งที่มาของ GitHub คุณต้องใช้ที่เก็บถาวรสำหรับการจัดจำหน่ายเพื่อเริ่มต้น Bazel คุณไม่สามารถ ใช้โครงสร้างแหล่งข้อมูลที่โคลนจาก GitHub (ที่เก็บถาวรสำหรับการเผยแพร่มีไฟล์ต้นฉบับที่สร้างขึ้น ซึ่งจำเป็นสำหรับการเริ่มต้นระบบและไม่ได้เป็นส่วนหนึ่ง ของโครงสร้างแหล่งที่มาของ Git ปกติ)
 
- แตกไฟล์เก็บถาวรของการกระจายไว้ที่ใดก็ได้บนดิสก์ - คุณควรยืนยันลายเซ็นที่สร้างโดยคีย์รุ่นของ Bazel ซึ่งคือ 3D5919B448457EE0 
ขั้นตอนที่ 2ก: เริ่มต้น Bazel ใน Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้าย Unix
ดูวิธีการสำหรับ Windows ได้ที่เริ่มต้นใช้งาน Bazel ใน Windows
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 Bootstrap Bazel ใน Unix
- เปิดหน้าต่างเชลล์หรือเทอร์มินัล 
- cdไปยังไดเรกทอรีที่คุณแตกไฟล์ที่เก็บการเผยแพร่
- เรียกใช้สคริปต์การคอมไพล์: - env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh
ระบบจะวางเอาต์พุตที่คอมไพล์ไว้ใน output/bazel นี่คือไบนารี Bazel แบบสแตนด์อโลน
ที่ไม่มี JDK แบบฝัง คุณสามารถคัดลอกไปวางที่ใดก็ได้หรือใช้
ในตำแหน่งเดิม เพื่อความสะดวก ให้คัดลอกไบนารีนี้ไปยังไดเรกทอรีที่อยู่ใน PATH (เช่น /usr/local/bin ใน Linux)
หากต้องการสร้างไบนารี bazel ในลักษณะที่ทำซ้ำได้ ให้ตั้งค่า
SOURCE_DATE_EPOCH
ในขั้นตอน "เรียกใช้สคริปต์การคอมไพล์" ด้วย
ขั้นตอนที่ 2b: เริ่มต้น Bazel ใน Windows
ดูวิธีการสำหรับระบบที่คล้าย Unix ได้ที่ Bootstrap Bazel ใน Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้าย Unix
2.1 ติดตั้งข้อกำหนดเบื้องต้น
- แพ็กเกจ MSYS2 สำหรับ zip และ unzip เรียกใช้คำสั่งต่อไปนี้ในเชลล์ MSYS2 - pacman -S zip unzip patch
- คอมไพเลอร์ Visual C++ ติดตั้งคอมไพเลอร์ Visual C++ เป็นส่วนหนึ่ง ของ Visual Studio 2015 ขึ้นไป หรือติดตั้งเครื่องมือบิลด์ สำหรับ Visual Studio 2017 เวอร์ชันล่าสุด 
- JDK ต้องใช้เวอร์ชัน 21 
- Python ระบบรองรับเวอร์ชัน 2 และ 3 คุณจึงติดตั้งเพียงเวอร์ชันใดเวอร์ชันหนึ่งก็เพียงพอ คุณต้องใช้เวอร์ชันที่ทำงานบน Windows (ดาวน์โหลดได้จาก https://www.python.org) เวอร์ชันที่ติดตั้งผ่าน pacman ใน MSYS2 จะใช้งานไม่ได้ 
2.2 Bootstrap Bazel ใน Windows
- เปิดเชลล์ MSYS2 
- ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้ - BAZEL_VSหรือ- BAZEL_VC(ไม่เหมือนกัน): ตั้งค่าเป็น เส้นทางไปยังไดเรกทอรี Visual Studio (BAZEL_VS) หรือไปยังไดเรกทอรี Visual C++ (BAZEL_VC) การตั้งค่าอย่างใดอย่างหนึ่งก็เพียงพอแล้ว
- BAZEL_SH: เส้นทางของ MSYS2- bash.exeดูคำสั่งใน ตัวอย่างด้านล่าง- อย่าตั้งค่าเป็น - C:\Windows\System32\bash.exe(คุณจะมีไฟล์นี้ หากติดตั้ง Windows Subsystem for Linux) 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
ในขั้นตอน "เรียกใช้สคริปต์การคอมไพล์" ด้วย
คุณไม่จำเป็นต้องเรียกใช้ Bazel จากเชลล์ MSYS2 คุณเรียกใช้ Bazel ได้จาก
Command Prompt (cmd.exe) หรือ PowerShell