หน้านี้จะอธิบายวิธีติดตั้ง Bazel จากต้นทางและให้เคล็ดลับการแก้ปัญหาสำหรับปัญหาที่พบได้ทั่วไป
วิธีสร้าง Bazel จากต้นทางมีดังนี้
สร้างโค้ดโดยใช้ไบนารี Bazel ที่มีอยู่
สร้างเครื่องมือนี้โดยไม่มีไบนารี Bazel ที่มีอยู่ซึ่งรู้จักกันในชื่อ Boottrapping
สร้าง Bazel โดยใช้ Bazel
สรุป
ดาวน์โหลด Bazel รุ่นล่าสุดจากหน้าการเผยแพร่ GitHub หรือBazelisk
ดาวน์โหลดแหล่งที่มาของ Bazel จาก GitHub และดึงข้อมูลจากที่อื่น หรือคุณจะโคลนโครงสร้างต้นทางจาก https://github.com/bazelbuild/bazel ก็ได้
ติดตั้งข้อกำหนดเบื้องต้นเดียวกันกับข้อกำหนดเบื้องต้นสำหรับ Bootstrapping (ดูสำหรับระบบที่คล้ายกับ 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
(ใน Unixes) หรือbazel.exe
(ใน Windows)เรื่องนี้ไม่ใช่ปัญหาใหญ่ คุณจะเปลี่ยนชื่อไบนารีหรือพิมพ์ชื่อไบนารีแทน
bazel
ก็ได้ไบนารีอาจเรียกใช้ไม่ได้ (บน Unixes)
คุณต้องทำให้ไฟล์สั่งการแบบไบนารีได้โดยเรียกใช้
chmod +x /path/to/bazel
ขั้นตอนที่ 2: ดาวน์โหลดแหล่งที่มาของ Bazel จาก GitHub
หากคุณคุ้นเคยกับ Git ก็เพียงแค่ git clone https://github.com/bazelbuild/bazel
หากไม่มี ให้ทำดังนี้
ดาวน์โหลดแหล่งที่มาล่าสุดเป็นไฟล์ ZIP
แยกเนื้อหาไว้ที่อื่น
เช่น สร้างไดเรกทอรี
bazel-src
ใต้ไดเรกทอรีหน้าแรกแล้วแยกออกมา
ขั้นตอนที่ 3: ติดตั้งข้อกำหนดเบื้องต้น
ติดตั้งข้อกำหนดเบื้องต้นเดียวกันกับข้อกำหนดเบื้องต้นสำหรับ Bootstrapping (ดูด้านล่าง) เช่น 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
เพื่อให้ได้ไบนารีที่เล็กกว่า แต่สร้างได้ช้ากว่าผลลัพธ์จะอยู่ที่
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
เพื่อให้ได้ไบนารีที่เล็กกว่า แต่สร้างได้ช้ากว่าผลลัพธ์จะอยู่ที่
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 ปกติ)
คลายการแพคข้อมูลการกระจายที่เก็บถาวรไว้ที่ไหนสักแห่งในดิสก์
คุณควรยืนยันลายเซ็นที่สร้างโดยคีย์การเผยแพร่ 3D5919B448457EE0 ของ Bazel
ขั้นตอนที่ 2a: Bootstrap Bazel ใน Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้ายกับ Unix
ดูวิธีการสำหรับ Windows ได้ที่ Bootstrap Bazel ใน Windows
2.1 ติดตั้งข้อกำหนดเบื้องต้น
แบช
บีบอัด, แตกไฟล์
ชุดเครื่องมือของบิลด์ 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
เปิด 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ข: Bootstrap Bazel ใน Windows
สำหรับระบบที่คล้ายกับ Unix โปรดดู Bootstrap Bazel ใน Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้ายกับ Unix
2.1 ติดตั้งข้อกำหนดเบื้องต้น
แพ็กเกจ MSYS2 สำหรับการบีบอัดและคลายการบีบอัด เรียกใช้คำสั่งต่อไปนี้ในเชลล์ 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
เปิด Shell MSYS2
ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้
BAZEL_VS
หรือBAZEL_VC
(ไม่เหมือนกัน): ตั้งค่าเป็นเส้นทางไปยังไดเรกทอรี Visual Studio (BAZEL_VS) หรือไดเรกทอรี C++ ภาพ (BAZEL_VC) เพียงตั้งค่าอย่างใดอย่างหนึ่งก็เพียงพอแล้วBAZEL_SH
: เส้นทางของ MSYS2bash.exe
ดูคำสั่งในตัวอย่างด้านล่างอย่าตั้งค่าเป็น
C:\Windows\System32\bash.exe
(จะมีไฟล์นั้นอยู่ หากติดตั้งระบบย่อยของ Windows สำหรับ 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 จาก Shell MSYS2 คุณจะเรียกใช้ Bazel จาก Command Prompt (cmd.exe
) หรือ PowerShell ก็ได้