أعلم غرابة العنوان، وهذا آخر ما كنت أتمناه لتدوينتي الأولى فعليا!!

على العموم لمن لا يعرف نظام ويندوز الفرعي للينكس windows subsystem for linux فهو طبقة توافقية لتشغيل برمجيات أنظمة جنو/لينكس على ويندوز -حسب تعريف ويكيبيديا- ولكن هل نحتاج لبرنامج مشابه من أجل تشغيل برمجيات لينكس على لينكس ؟

في الواقع نعم، وذلك لعدة أسباب:

  1. تختلف البرمجيات الموجودة من توزيعة لأخرى، فقد تحتاج برمجية متوفرة في مستودعات ارش ولكنها غير موجودة على ديبيان.
  2. في نفس التوزيعة التي تستخدمها، قد تحتاج لبرنامج موجود في نسخة أقدم أو أحدث (إن كنت تفضل استخدام التوزيعات المستقرة)
  3. شخصيا لا أفضل تثبيت البرمجيات من مستودعات التوزيعة (خاصة عند تجربة برنامج جديد)، تجنبا لمشاكل الاعتماديات وفشل النظام.

سابقا حاولت استخدام podman بقدر المستطاع، ولكن وجود نسخ أخرى من لينكس صار ممكن مع distrobox -بدون الدخول في التفاصيل التقنية- ويعمل بشكل شبيه لـ windows subsystem for linux.

أهم ميزة أتى بها distrobox هي التوافقية بين النظام الضيف والنظام المضيف، فمجلد HOME المستتخدم مشترك بين النظامين، وكذلك يمكن من خلاله تثبيت وتشغيل برامج الواجهات الرسومية، بل وتصديرها إلى النظام المضيف.

قبل أن تبدأ يجب أن تكون على دراية بعمل البرامج من سطر الأوامر، والخيارات options، حاولت هنا التوضيح بقدر المستطاع، لكن إن لم تحتج فكرة استضافة نظام لينكس بداخل آخر، فلا داعي لأن تكمل.

التثبيت

يجب أن تمتلك docker أو podman قبل أن تبدأ.

curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh

إضافة أنظمة جديدة

distrobox create --name system-name --image container:tag

يستخدم distrobox حاويات دوكر، وعليه يمكنك اختيار نظام التشغيل الذي تريده من dockerhub

docker hub

على سبيل المثال الأمر التالي لتحميل النسخة المتدحرجة من debian

distrobox create --name debianbox-testing --image debian:testing

وأخيرا يمكن سرد الأنظمة الموجودة من خلال الأمر التالي:

distrobox list

التعامل مع الأنظمة

للتبديل إلى طرفية النظام الجديد:

distrobox enter debianbox-testing

على سبيل المثال هنا ثبت rstudio بداخل النظام الضيف:

sudo apt install r-base 
sudo apt install ./rstudio-2022.02.2-485-amd64.deb
rstudio

rstudio in distrobox

لتنفيذ أمر في النظام بدون تبديل الطرفية:

distrobox enter debianbox-testing -- htop

إيقاف وحذف النظام الضيف

ﻹيقاف النظام الضيف أو حذفه:

distrobox stop debianbox-testing
distro rm debianbox-testing

استنساخ النظام الضيف

يمكن استنساخ نظام من آخر بالصيغة الآتية:

distrobox create --name debianclone --clone debianbox-testing

تصدير برمجيات الضيف للمضيف

أكثر جزء ممتع في الموضوع بالكامل هو إمكانية استخدام برمجيات الضيف من داخل المضيف، لكن قبل الدخول في التفاصيل يجب أن تدرك وجود ثلاثة أنواع للبرامج:

  1. تطبيقات الواجهات الرسومية
  2. خدمات تعمل في الخلفية استجابة لحدث معين، كـapache و nginx
  3. أدوات سطر الأوامر، كـ ffmpeg و imagemagic

يمكن تصدير البرامج والخدمات بالطريقة التالية:

distrobox-export --app rstudio
distrobox-export --service nginx
distrobox-export --bin /usr/bin/ffmpeg --export-path ~/.local/bin

ستجد بعدها البرامج في نظامك بمجرد البحث عنها

rstudio ي النظام المضيف

لاحظ أن تصدير أدوات سطر الأوامر يحتاج لتحديد أحد مجلدات النظام لتصدير الأمر إليه.

تمرير معاملات إضافية

قد ترغب بتشغيل البرنامج بخيارات محددة، مثلا البرامج المبنية باستخدام الكترون كـ atom و vs-code قد تحتاج لتمرير المعامل --foreground. لتمرير معاملات إضافية إلى الأمر استخدم --extra-flags

distrobox-export --app atom --extra-flags "--foreground"
distrobox-export --bin /usr/bin/snort --export-path ~/.local/bin --extra-flags "-A console"

تشغيل البرامج المصدرة بصلاحيات الروت

يمكن تنفيذ هذا بإضافة --sudo نهاية أمر التصدير فقط

distrobox-export ... --sudo

الغاء البرامج المصدرة

في حال قررت عدم حاجتك لبرنامج في النظام الضيف، ورغبت بإزالة الربط يمكن استخدام --delete

distrobox-export ... --delete

خاتمة

أخيرا وجود distrobox مهم كأداة للمطورين أسهل من استخدام podman أو docker مباشرة.

وكذلك للمستخدمين العاديين حيث لم تصل البرامج المحزمة بـ flatpak إلى مرحلة النضج الكامل.