หน้านี้จะอธิบายวิธีติดตั้ง Bazel จากซอร์สโค้ดและแสดงเคล็ดลับการแก้ปัญหาที่พบได้ทั่วไป
หากต้องการสร้าง Bazel จากซอร์สโค้ด ให้ทําอย่างใดอย่างหนึ่งต่อไปนี้
บิลด์โดยไม่ใช้ไฟล์ไบนารี Bazel ที่มีอยู่ ซึ่งเรียกว่าการบูต
บิลด์ Bazel โดยใช้ Bazel
สรุป
รับ Bazel เวอร์ชันล่าสุดจากหน้ารุ่นของ GitHub หรือใช้ Bazelisk
ดาวน์โหลดซอร์สโค้ดของ Bazel จาก GitHub แล้วแตกไฟล์ในที่ใดก็ได้ หรือจะโคลนซอร์สทรีจาก https://github.com/bazelbuild/bazel โดยใช้ Git ก็ได้
ติดตั้งข้อกําหนดเบื้องต้นเดียวกันกับสำหรับการเริ่มต้นระบบ (ดูสําหรับระบบที่คล้ายกับ 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: ติดตั้งข้อกําหนดเบื้องต้น
ติดตั้งข้อกําหนดเบื้องต้นเดียวกันกับการสร้าง Bootstrap (ดูด้านล่าง) เช่น JDK, C++ compiler, 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
เพื่อให้ได้ไฟล์ไบนารีขนาดเล็กลงแต่ใช้เวลาสร้างนานขึ้นก็ได้คุณสามารถสร้างด้วย Flag
--stamp --embed_label=X.Y.Z
เพื่อฝังเวอร์ชัน Bazel สำหรับไบนารีเพื่อให้bazel --version
แสดงผลเวอร์ชันที่ระบุเอาต์พุตจะอยู่ที่
bazel-bin/src/bazel-dev
(หรือbazel-bin/src/bazel
)
ขั้นตอนที่ 4ข: บิลด์ Bazel ใน Windows
ดูวิธีการสำหรับระบบที่คล้ายกับ Unix ได้ที่หัวข้อUbuntu Linux, macOS และระบบอื่นๆ ที่คล้ายกับ Unix
เป้าหมาย: เรียกใช้ Bazel เพื่อสร้างไฟล์ปฏิบัติการ Bazel ที่กําหนดเอง (bazel-bin\src\bazel-dev.exe
)
วิธีการ
เริ่ม Command Prompt (เมนู Start > Run > "cmd.exe")
cd
ไปยังไดเรกทอรีที่คุณแตกไฟล์ (หรือโคลน) แหล่งที่มาของ Bazelตัวอย่างเช่น หากคุณแยกแหล่งที่มาไว้ในไดเรกทอรีบ้าน ให้เรียกใช้คำสั่งต่อไปนี้
cd %USERPROFILE%\bazel-src
วิธีสร้าง Bazel จากซอร์ส
bazel build //src:bazel-dev.exe
หรือจะเรียกใช้
bazel build //src:bazel.exe --compilation_mode=opt
เพื่อให้ได้ไฟล์ไบนารีขนาดเล็กลงก็ได้ แต่การสร้างจะช้าลงคุณสามารถสร้างด้วย Flag
--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 คุณต้องใช้ไฟล์เก็บถาวรของ Distribution เพื่อเริ่มต้นใช้งาน Bazel คุณใช้สคีมาซอร์สโค้ดที่โคลนจาก GitHub ไม่ได้ (ไฟล์เก็บถาวรของรุ่นมีไฟล์ซอร์สโค้ดที่สร้างขึ้นซึ่งจําเป็นสําหรับการเริ่มต้นใช้งานและไม่ได้อยู่ในลําดับชั้นซอร์สโค้ด Git ปกติ)
แตกไฟล์เก็บถาวรของรุ่นที่ใดก็ได้บนดิสก์
คุณควรยืนยันลายเซ็นที่สร้างโดยคีย์รุ่น 3D5919B448457EE0 ของ Bazel
ขั้นตอนที่ 2ก: บูตสตับ Bazel ใน Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้าย Unix
โปรดดูวิธีการสำหรับ Windows ที่หัวข้อBootstrap 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 เริ่มต้นใช้งาน Bazel ใน Unix
เปิดหน้าต่างเชลล์หรือเทอร์มินัล
cd
ไปยังไดเรกทอรีที่คุณแตกไฟล์เก็บถาวรของ Distributionเรียกใช้สคริปต์การคอมไพล์:
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
ในขั้นตอน "เรียกใช้สคริปต์การคอมไพล์" ด้วย
ขั้นตอนที่ 2ข: บูตสตับ 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 เวอร์ชันล่าสุดสำหรับ Visual Studio 2017
JDK ต้องใช้เวอร์ชัน 21
Python รองรับเวอร์ชัน 2 และ 3 โดยการติดตั้งเวอร์ชันใดเวอร์ชันหนึ่งก็เพียงพอแล้ว คุณต้องใช้เวอร์ชันสำหรับ Windows (ดาวน์โหลดได้จาก https://www.python.org) เวอร์ชันที่ติดตั้งผ่าน แพ็กแมน ใน MSYS2 จะใช้ไม่ได้
2.2 เริ่มต้นใช้งาน Bazel ใน Windows
เปิดเชลล์ MSYS2
ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้
BAZEL_VS
หรือBAZEL_VC
(ไม่เหมือนกัน): ตั้งค่าเป็นเส้นทางไปยังไดเรกทอรี Visual Studio (BAZEL_VS) หรือไปยังไดเรกทอรี Visual C++ (BAZEL_VC) การตั้งค่าเพียงรายการใดรายการหนึ่งก็เพียงพอแล้วBAZEL_SH
: เส้นทางของ MSYS2bash.exe
ดูคำสั่งในตัวอย่างด้านล่างอย่าตั้งค่าเป็น
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
ไปยังไดเรกทอรีที่คุณแตกไฟล์เก็บถาวรของ Distributionเรียกใช้สคริปต์การคอมไพล์:
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