تثبيت Bazel على Ubuntu

تشرح هذه الصفحة خيارات تثبيت Bazel على Ubuntu. وتوفّر أيضًا هذه الأداة روابط تؤدي إلى النصوص البرمجية في Bazel وجهاز التثبيت الثنائي، إذا لزم الأمر كخيار احتياطي (على سبيل المثال، إذا لم يكن لديك إذن وصول إداري).

الأنظمة الأساسية المتوافقة مع Ubuntu Linux:

  • 20.04 (LTS)
  • 18.04 (LTS)

يجب أن يكون Bazel متوافقًا مع إصدارات Ubuntu الأخرى وDebian، &"stretch" والإصدارات الأحدث، ولكن لم يتم اختبارها ولا يضمن عملها.

ثبِّت Bazel على Ubuntu باستخدام إحدى الطرق التالية:

ملاحظة: بالنسبة إلى الأنظمة المستندة إلى الذراع، لا يحتوي مستودع APT على إصدار arm64، وليس هناك برنامج تثبيت ثنائي. عليك استخدام Bazelisk أو التجميع من المصدر.

يأتي Bazel مع نصين برمجيين مكتملين. بعد تثبيت Bazel، يمكنك إجراء ما يلي:

الخطوة 1: إضافة عنوان URL لتوزيع Bazel كمصدر للحزمة

استخدام مستودع التطبيقات Bazel's

ملاحظة: هذه خطوة إعداد لمرة واحدة.

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

استخدام أداة التثبيت الثنائية

يجب بوجهٍ عام استخدام مستودع التطبيقات المناسبة، ولكن يمكن أن تكون أداة التثبيت الثنائية مفيدة إذا لم يكن لديك أذونات المشرف على جهازك، أو لا يمكنك إضافة مستودعات مخصّصة.

يمكن تنزيل أدوات التثبيت الثنائية من صفحة إصدارات GitHub في Bazel's.

يحتوي أداة التثبيت على البرنامج الثنائي من Bazel ويستخرجه في مجلد $HOME/bin. يجب تثبيت بعض المكتبات الإضافية يدويًا لكي تعمل Bazel.

الخطوة 1: تثبيت الحِزم المطلوبة

يحتاج Bazel إلى برنامج التجميع C++ وفك ضغط أو ضغط zip ليعمل:

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 لجعله نهائيًا.