การติดตั้ง Bazel ใน Ubuntu

หน้านี้จะอธิบายถึงตัวเลือกสำหรับการติดตั้ง Bazel บน Ubuntu นอกจากนี้ยังมีลิงก์ไปยังสคริปต์การทำงานสำเร็จของ Bazel และโปรแกรมติดตั้งไบนารี หากจำเป็นเป็นตัวเลือกสำรอง (เช่น หากไม่มีสิทธิ์เข้าถึงระดับผู้ดูแลระบบ)

แพลตฟอร์ม Ubuntu Linux ที่รองรับ:

  • 20.04 (LTS)
  • 18.04 (LTS)

Bazel ควรใช้ได้กับ Ubuntu รุ่นอื่นๆ และ Debian "stretch" ขึ้นไป แต่ยังไม่ผ่านการทดสอบและไม่รับประกันว่าจะทำงานได้

ติดตั้ง Bazel บน Ubuntu โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้

หมายเหตุ: สำหรับระบบแบบ Arm ที่เก็บ APT จะไม่มีรุ่น arm64 และไม่มีโปรแกรมติดตั้งแบบไบนารี หรือจะใช้ Bazelisk หรือคอมไพล์จากซอร์สโค้ด

Bazel มาพร้อมสคริปต์การทำงาน 2 แบบ หลังจากติดตั้ง Bazel คุณจะทำสิ่งต่อไปนี้ได้

ขั้นตอนที่ 1: เพิ่ม URI การเผยแพร่ Bazel เป็นแหล่งที่มาของแพ็กเกจ

การใช้ที่เก็บ apt ของ Bazel

หมายเหตุ: ขั้นตอนนี้เป็นขั้นตอนการตั้งค่าแบบครั้งเดียว

sudo apt install apt-transport-https curl gnupg
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor >bazel-archive-keyring.gpg
sudo mv bazel-archive-keyring.gpg /usr/share/keyrings
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/bazel-archive-keyring.gpg] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list

ชื่อคอมโพเนนต์ "jdk1.8" จะยังคงอยู่เพื่อเหตุผลเดิมเท่านั้นและไม่เกี่ยวข้องกับเวอร์ชัน JDK ที่รองรับหรือที่รวมไว้ รุ่น Bazel นั้นไม่ขึ้นอยู่กับเวอร์ชัน Java การเปลี่ยนชื่อคอมโพเนนต์ "jdk1.8" จะเป็นการทำลายผู้ใช้เดิมของที่เก็บ

ขั้นตอนที่ 2: ติดตั้งและอัปเดต Bazel

sudo apt update && sudo apt install bazel

เมื่อติดตั้งแล้ว คุณสามารถอัปเกรดเป็น Bazel เวอร์ชันใหม่เป็นส่วนหนึ่งของการอัปเดตระบบตามปกติของคุณ:

sudo apt update && sudo apt full-upgrade

แพ็กเกจ bazel จะติดตั้ง Bazel เวอร์ชันเสถียรล่าสุดเสมอ คุณติดตั้ง Bazel เวอร์ชันเก่าที่เจาะจงได้นอกเหนือจากเวอร์ชันล่าสุด เช่น

sudo apt install bazel-1.0.0

การดำเนินการนี้จะติดตั้ง Bazel 1.0.0 เป็น /usr/bin/bazel-1.0.0 ในระบบของคุณ ซึ่งจะเป็นประโยชน์ในกรณีที่คุณต้องใช้ Bazel เวอร์ชันที่เจาะจงเพื่อสร้างโปรเจ็กต์ เช่น เนื่องจากจะใช้ไฟล์ .bazelversion เพื่อระบุอย่างชัดเจนว่าควรสร้างเวอร์ชัน Bazel ใด

หรือจะตั้งค่า bazel เป็นเวอร์ชันที่ระบุได้โดยการสร้างลิงก์สัญลักษณ์:

sudo ln -s /usr/bin/bazel-1.0.0 /usr/bin/bazel
bazel --version  # 1.0.0

ขั้นตอนที่ 3: ติดตั้ง JDK (ไม่บังคับ)

Bazel มี JRE ในแพ็กเกจส่วนตัวที่รวมอยู่ในรันไทม์ ทำให้คุณไม่ต้องติดตั้ง Java เวอร์ชันใดโดยเฉพาะ

แต่หากต้องการสร้างโค้ด Java โดยใช้ Bazel คุณต้องติดตั้ง JDK

# Ubuntu 16.04 (LTS) uses OpenJDK 8 by default:
sudo apt install openjdk-8-jdk
# Ubuntu 18.04 (LTS) uses OpenJDK 11 by default:
sudo apt install openjdk-11-jdk

การใช้โปรแกรมติดตั้งไบนารี

โดยทั่วไปคุณควรใช้ที่เก็บ apt แต่โปรแกรมติดตั้งไบนารีอาจมีประโยชน์หากคุณไม่มีสิทธิ์ระดับผู้ดูแลระบบในเครื่องของคุณหรือเพิ่มที่เก็บที่กำหนดเองไม่ได้

ดาวน์โหลดโปรแกรมติดตั้งไบนารีได้จากหน้ารุ่น GitHub ของ Bazel

โปรแกรมติดตั้งมีไบนารี Bazel และแตกข้อมูลลงในโฟลเดอร์ $HOME/bin ต้องติดตั้งไลบรารีเพิ่มเติมบางรายการด้วยตนเองเพื่อให้ Bazel ทำงานได้

ขั้นตอนที่ 1: ติดตั้งแพ็กเกจที่จำเป็น

Bazel ต้องใช้คอมไพเลอร์ C++ และแตกไฟล์ / บีบอัดเพื่อให้ใช้งานได้:

sudo apt install g++ unzip zip

หากต้องการสร้างโค้ด Java โดยใช้ Bazel ให้ติดตั้ง JDK ดังนี้

# Ubuntu 16.04 (LTS) uses OpenJDK 8 by default:
sudo apt-get install openjdk-8-jdk
# Ubuntu 18.04 (LTS) uses OpenJDK 11 by default:
sudo apt-get install openjdk-11-jdk

ขั้นตอนที่ 2: เรียกใช้โปรแกรมติดตั้ง

ต่อไป ให้ดาวน์โหลดโปรแกรมติดตั้งไบนารี Bazel ชื่อ bazel-version-installer-linux-x86_64.sh จากหน้ารุ่นต่างๆ ของ Bazel ใน GitHub

เรียกใช้โค้ดด้วยคำสั่งต่อไปนี้

chmod +x bazel-version-installer-linux-x86_64.sh
./bazel-version-installer-linux-x86_64.sh --user

แฟล็ก --user จะติดตั้ง Bazel ลงในไดเรกทอรี $HOME/bin ในระบบและกำหนดเส้นทาง .bazelrc เป็น $HOME/.bazelrc ใช้คำสั่ง --help เพื่อดูตัวเลือกการติดตั้งเพิ่มเติม

ขั้นตอนที่ 3: ตั้งค่าสภาพแวดล้อมของคุณ

หากคุณเรียกใช้โปรแกรมติดตั้ง Bazel ด้วยแฟล็ก --user ตามที่ระบุข้างต้น จะมีการติดตั้งไฟล์ดำเนินการของ Bazel ในไดเรกทอรี $HOME/bin คุณควรเพิ่มไดเรกทอรีนี้ลงในเส้นทางเริ่มต้นดังนี้

export PATH="$PATH:$HOME/bin"

คุณเพิ่มคำสั่งนี้ลงในไฟล์ ~/.bashrc หรือ ~/.zshrc เพื่อทำให้เป็นแบบถาวรได้ด้วย