หน้านี้อธิบายวิธีติดตั้ง 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 (หรือคุณจะสร้างใหม่ตั้งแต่ ต้น (บูตสแตรป) ก็ได้)
การแก้ปัญหา:
หากคุณเรียกใช้ 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) เป็นต้น
ขั้นตอนที่ 4a: สร้าง 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เพื่อให้ได้ไบนารีขนาดเล็กลง แต่จะสร้างได้ช้าลงคุณสามารถสร้างด้วยแฟล็ก
--stamp --embed_label=X.Y.Zเพื่อฝังเวอร์ชัน Bazel สำหรับไบนารีเพื่อให้bazel --versionแสดงเวอร์ชันที่ระบุเอาต์พุตจะอยู่ที่
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)
วิธีการ:
เริ่มพรอมต์คำสั่ง (เมนูเริ่ม > เรียกใช้ > "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 (ที่เก็บถาวรสำหรับการเผยแพร่)
(ขั้นตอนนี้เหมือนกันสำหรับทุกแพลตฟอร์ม)
ดาวน์โหลด
bazel-<version>-dist.zipจาก GitHub เช่นbazel-0.28.1-dist.zipข้อควรทราบ:
- มีที่เก็บถาวรสำหรับการเผยแพร่เพียงรายการเดียวที่ใช้ได้กับทุกสถาปัตยกรรม ไม่มีที่เก็บถาวรสำหรับการเผยแพร่ที่เฉพาะเจาะจงกับสถาปัตยกรรมหรือระบบปฏิบัติการ
- แหล่งที่มาเหล่านี้ไม่เหมือนกับโครงสร้างแหล่งที่มาของ GitHub คุณต้องใช้ที่เก็บถาวรสำหรับการเผยแพร่เพื่อบูตสแตรป Bazel คุณจะใช้โครงสร้างแหล่งที่มาที่โคลนจาก GitHub ไม่ได้ (ที่เก็บถาวรสำหรับการเผยแพร่มีไฟล์แหล่งที่มาที่สร้างขึ้นซึ่งจำเป็นสำหรับการบูตสแตรปและไม่ได้เป็นส่วนหนึ่งของโครงสร้างแหล่งที่มาของ Git ปกติ)
แตกไฟล์ที่เก็บถาวรสำหรับการเผยแพร่ไว้ที่ใดที่หนึ่งในดิสก์
คุณควรตรวจสอบลายเซ็นที่สร้างโดยคีย์การเผยแพร่ของ Bazel 3D5919B448457EE0
ขั้นตอนที่ 2a: บูตสแตรป Bazel ใน Ubuntu Linux, macOS และระบบอื่นๆ ที่ใช้ Unix
ดูวิธีการสำหรับ Windows ได้ที่ บูตสแตรป Bazel ใน Windows
2.1 ติดตั้งข้อกำหนดเบื้องต้น
Bash
zip, unzip
ชุดเครื่องมือสร้าง C++
JDK ต้องใช้เวอร์ชัน 21
Python ต้องใช้เวอร์ชัน 3
ตัวอย่างเช่น ใน Ubuntu Linux คุณสามารถติดตั้งข้อกำหนดเหล่านี้ได้โดยใช้คำสั่งต่อไปนี้
sudo apt-get install build-essential openjdk-21-jdk python3 zip unzip
2.2 บูตสแตรป 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 ได้ที่ บูตสแตรป Bazel ใน Ubuntu Linux, macOS และระบบอื่นๆ ที่ใช้ Unix
2.1 ติดตั้งข้อกำหนดเบื้องต้น
แพ็กเกจ MSYS2 สำหรับ zip และ unzip เรียกใช้คำสั่งต่อไปนี้ในเชลล์ MSYS2
pacman -S zip unzip patchคอมไพเลอร์ Visual C++ ติดตั้งคอมไพเลอร์ Visual C++ เป็นส่วนหนึ่ง ของ Visual Studio 2015 หรือใหม่กว่า หรือติดตั้ง Build Tools for Visual Studio 2017 เวอร์ชันล่าสุด
JDK ต้องใช้เวอร์ชัน 21
Python ระบบรองรับเวอร์ชัน 2 และ 3 โดยคุณติดตั้งเวอร์ชันใดเวอร์ชันหนึ่งก็ได้ คุณต้องใช้เวอร์ชันเนทีฟของ Windows (ดาวน์โหลดได้จาก https://www.python.org) เวอร์ชันที่ติดตั้งผ่าน pacman ใน MSYS2 จะใช้ไม่ได้
2.2 บูตสแตรป Bazel ใน Windows
เปิดเชลล์ MSYS2
ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้
BAZEL_VSหรือBAZEL_VC(ตัวแปรทั้ง 2 ไม่ เหมือนกัน): ตั้งค่าเป็น เส้นทางไปยังไดเรกทอรี Visual Studio (BAZEL_VS) หรือไปยังไดเรกทอรี Visual C++ (BAZEL_VC) การตั้งค่าตัวแปรใดตัวแปรหนึ่งก็เพียงพอแล้วBAZEL_SH: เส้นทางของbash.exeของ MSYS2 ดูคำสั่งในตัวอย่างด้านล่างอย่าตั้งค่าตัวแปรนี้เป็น
C:\Windows\System32\bash.exe(คุณจะมีไฟล์ดังกล่าวหากติดตั้ง Windows Subsystem for Linux) Bazel ไม่รองรับbash.exeเวอร์ชันนี้PATH: เพิ่มไดเรกทอรี PythonJAVA_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 จากพรอมต์คำสั่ง (cmd.exe) หรือ PowerShell