أعلم غرابة العنوان، وهذا آخر ما كنت أتمناه لتدوينتي الأولى فعليا!!
على العموم لمن لا يعرف نظام ويندوز الفرعي للينكس windows subsystem for linux
فهو طبقة توافقية لتشغيل برمجيات أنظمة جنو/لينكس على ويندوز -حسب تعريف ويكيبيديا- ولكن هل نحتاج لبرنامج مشابه من أجل تشغيل برمجيات لينكس على لينكس ؟
في الواقع نعم، وذلك لعدة أسباب:
- تختلف البرمجيات الموجودة من توزيعة لأخرى، فقد تحتاج برمجية متوفرة في مستودعات ارش ولكنها غير موجودة على ديبيان.
- في نفس التوزيعة التي تستخدمها، قد تحتاج لبرنامج موجود في نسخة أقدم أو أحدث (إن كنت تفضل استخدام التوزيعات المستقرة)
- شخصيا لا أفضل تثبيت البرمجيات من مستودعات التوزيعة (خاصة عند تجربة برنامج جديد)، تجنبا لمشاكل الاعتماديات وفشل النظام.
سابقا حاولت استخدام 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
على سبيل المثال الأمر التالي لتحميل النسخة المتدحرجة من 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
لتنفيذ أمر في النظام بدون تبديل الطرفية:
distrobox enter debianbox-testing -- htop
إيقاف وحذف النظام الضيف
ﻹيقاف النظام الضيف أو حذفه:
distrobox stop debianbox-testing
distro rm debianbox-testing
استنساخ النظام الضيف
يمكن استنساخ نظام من آخر بالصيغة الآتية:
distrobox create --name debianclone --clone debianbox-testing
تصدير برمجيات الضيف للمضيف
أكثر جزء ممتع في الموضوع بالكامل هو إمكانية استخدام برمجيات الضيف من داخل المضيف، لكن قبل الدخول في التفاصيل يجب أن تدرك وجود ثلاثة أنواع للبرامج:
- تطبيقات الواجهات الرسومية
- خدمات تعمل في الخلفية استجابة لحدث معين، كـ
apache
وnginx
- أدوات سطر الأوامر، كـ
ffmpeg
وimagemagic
يمكن تصدير البرامج والخدمات بالطريقة التالية:
distrobox-export --app rstudio
distrobox-export --service nginx
distrobox-export --bin /usr/bin/ffmpeg --export-path ~/.local/bin
ستجد بعدها البرامج في نظامك بمجرد البحث عنها
لاحظ أن تصدير أدوات سطر الأوامر يحتاج لتحديد أحد مجلدات النظام لتصدير الأمر إليه.
تمرير معاملات إضافية
قد ترغب بتشغيل البرنامج بخيارات محددة، مثلا البرامج المبنية باستخدام الكترون كـ 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
إلى مرحلة النضج الكامل.