หน้านี้จะอธิบายวิธีติดตั้ง Bazel จากแหล่งที่มาและให้เคล็ดลับการแก้ปัญหาสำหรับปัญหาที่พบได้ทั่วไป
หากต้องการสร้าง Bazel จากต้นทาง คุณสามารถดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้
สร้างโค้ดโดยใช้ไบนารี Bazel ที่มีอยู่
สร้างมันโดยไม่มีไบนารี Bazel ที่มีอยู่ซึ่งรู้จักกันในชื่อ Bootstrapping
สร้าง Bazel โดยใช้ Bazel
สรุป
ดาวน์โหลด Bazel รุ่นล่าสุดจากหน้ารุ่น GitHub หรือ Bazelisk
ดาวน์โหลดแหล่งที่มาของ Bazel จาก GitHub และดึงข้อมูลจากที่อื่น หรือคุณอาจโคลนต้นไม้ต้นทางจาก 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 คุณต้องมีไบนารี Basel ที่มีอยู่แล้ว โดยสามารถติดตั้งได้จากเครื่องมือจัดการแพ็กเกจหรือดาวน์โหลดจาก 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: ติดตั้งข้อกำหนดเบื้องต้น
ติดตั้งข้อกำหนดเบื้องต้นเดียวกันกับข้อกำหนดการเปิดเครื่อง (ดูด้านล่าง) ซึ่งก็คือ JDK, C++ คอมไพเลอร์, MSYS2 (หากคุณสร้างบน Windows) เป็นต้น
ขั้นตอนที่ 4a: สร้าง Bazel บน Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้ายกับ Unix
สำหรับคำแนะนำสำหรับ Windows โปรดดู Build 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
)
วิธีการ
เริ่มพรอมต์คำสั่ง (เมนูเริ่มต้น > เรียกใช้ > "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 ในตัว คุณสามารถคัดลอก ไปไว้ในไดเรกทอรีใดก็ได้แล้วนำไปใช้ได้ทันที (จะมีประโยชน์หากไดเรกทอรีนั้นอยู่ใน เส้นทางของคุณ เพื่อให้คุณเรียกใช้ "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. ต้องใช้เวอร์ชัน 11
Python เวอร์ชัน 2 และ 3 ได้รับการรองรับ ติดตั้งแค่เวอร์ชันเดียวก็เพียงพอแล้ว
เช่น ติดตั้งข้อกำหนดเหล่านี้ด้วยคำสั่งต่อไปนี้ใน Ubuntu Linux
sudo apt-get install build-essential openjdk-11-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. ต้องใช้เวอร์ชัน 11
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) หรือไดเรกทอรี Visual C++ (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/jdk1.8.0_112"
หรือ (โดยใช้ 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/jdk1.8.0_112"
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