หน้านี้อธิบายวิธีติดตั้ง Bazel จากแหล่งที่มาและให้เคล็ดลับการแก้ปัญหาสำหรับปัญหาที่พบได้ทั่วไป
หากต้องการสร้าง Bazel จากซอร์สโค้ด ให้ทําอย่างใดอย่างหนึ่งต่อไปนี้
บิลด์โดยไม่ใช้ไฟล์ปฏิบัติการ Bazel ที่มีอยู่ ซึ่งเรียกว่าการบูต
บิลด์ Bazel โดยใช้ Bazel
สรุป
รับ Bazel เวอร์ชันล่าสุดจากหน้ารุ่นของ GitHub หรือใช้ Bazelisk
ดาวน์โหลดซอร์สโค้ดของ Bazel จาก GitHub แล้วแตกไฟล์ในที่ใดก็ได้ หรือจะ git โคลนโครงสร้างต้นทางจาก 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 (หรือคุณจะสร้างจาก Scratch (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++ 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 แบบสแตนด์อโลน คุณสามารถคัดลอกไฟล์ไปยังไดเรกทอรีใดก็ได้และนำไปใช้ได้ทันที (มีประโยชน์ถ้าไดเรกทอรีนั้นอยู่ใน เส้นทางของคุณ เพื่อให้คุณสามารถเรียกใช้ "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ก: Bootstrap 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
เปิด Shell หรือหน้าต่างเทอร์มินัล
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
ในขั้นตอน "เรียกใช้สคริปต์การคอมไพล์" ด้วย
ขั้นตอนที่ 2ข: บูตสตับ Bazel ใน Windows
ดูวิธีการสำหรับระบบที่คล้าย Unix ได้ที่หัวข้อสร้าง Bazel ใน Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้าย Unix
2.1 ติดตั้งข้อกําหนดเบื้องต้น
แพ็กเกจ MSYS2 สำหรับการซิปและคลายการบีบอัด เรียกใช้คำสั่งต่อไปนี้ในเชลล์ 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 Bootstrap Bazel ใน Windows
เปิดเชลล์ MSYS2
ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้
BAZEL_VS
หรือBAZEL_VC
(ไม่เหมือนกัน): ตั้งค่าเป็นเส้นทางไปยังไดเรกทอรี Visual Studio (BAZEL_VS) หรือไดเรกทอรี C++ ของ Visual (BAZEL_VC) การตั้งค่าเพียงรายการใดรายการหนึ่งก็เพียงพอแล้วBAZEL_SH
: เส้นทางของ MSYS2bash.exe
ดูคำสั่งในตัวอย่างด้านล่างอย่าตั้งค่าเป็น
C:\Windows\System32\bash.exe
(คุณมีไฟล์นั้นหากติดตั้ง Windows Subsystem สำหรับ 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 จาก Command Prompt (cmd.exe
) หรือ PowerShell