EngineeringDone

42-lab — تهيئة بيئة التطوير بأمر واحد

سكربت شيل يختصر تهيئة بيئة طالب 42 إلى أمر واحد، مع مسار منفصل لـ macOS وآخر لـ Linux، مجرّب أيضاً على WSL.

٢٢ يوليو ٢٠٢٦
3 التقنيات
English
42-lab — تهيئة بيئة التطوير بأمر واحد

عن هذا المشروع

سكربت شيل يهيئ بيئة التطوير الكاملة لطلاب 42 بأمر واحد، ويثبّت الحزم والأدوات المطلوبة على macOS وLinux وWSL.

التقنيات

ShellAutomationLinux

i99dev_project_42-lab_cover_1200x630_v1.0.0.svg

أداة موجّهة لطلاب 42 الذين يعملون خارج الحرم أو على أجهزتهم الشخصية.

نظرة عامة

داخل حرم 42 تأتي الأجهزة مهيّأة مسبقاً. خارجه يبدأ الطالب من جهاز فارغ ويقضي أوّل ساعاته في تثبيت أدوات لا علاقة لها بالمشروع. 42-lab سكربت شيل يختصر هذا كله إلى تشغيل واحد.

chmod +x ./42_lab.sh
./42_lab.sh          # macOS
sudo ./42_lab.sh     # Linux

المشكلة

  • الوقت الضائع متكرر. كل طالب جديد يعيد اكتشاف قائمة الأدوات نفسها من الصفر.
  • الأنظمة مختلفة. مدير الحزم على macOS ليس هو نفسه على توزيعات Debian، وتعليمات مكتوبة لنظام واحد تترك البقية خارج الخدمة.
  • الخطأ البشري. قائمة أوامر طويلة تُنسخ يدوياً تعني حتماً أن يُتخطّى أحد الأسطر، ثم يظهر أثر ذلك لاحقاً كخطأ غامض في البناء.

التخطيط

السكربت مبني حول تفرّع واحد واضح حسب نظام التشغيل، وكل فرع ينتهي إلى الحالة ذاتها:

النظام ما يفعله السكربت التشغيل
macOS تثبيت brew ثم cask وbundle، ثم الحزم المطلوبة بدون صلاحيات جذر
Linux (Debian) تثبيت الحزم عبر مدير الحزم المحلي sudo
WSL مسار Linux نفسه sudo

القرارات المعمارية

سكربت شيل واحد بدل أداة إدارة تهيئة. أدوات مثل Ansible تحلّ المشكلة بشكل أنظف، لكنها تتطلّب تثبيتاً قبل التثبيت — وهذا يناقض الغرض. المطلوب شيء يعمل على جهاز لا يحمل سوى صدفة واتصال بالإنترنت.

أمر واحد لا واجهة تفاعلية. قائمة خيارات تسأل الطالب عمّا يريد تثبيته تفترض أنه يعرف الجواب أصلاً؛ وهو لا يعرفه في أوّل يوم. السلوك الافتراضي المتكامل أنفع من المرونة هنا.

الإحالة إلى بديل بدل منافسته. من يفضّل العزل الكامل يُحال إلى مشروع 42-Devcontainer المبني على Docker، بدل محاولة دعم الحالتين داخل سكربت واحد.

التنفيذ

الاستخدام يقتصر على استنساخ المستودع، منح صلاحية التنفيذ، ثم التشغيل. على macOS يتكفّل السكربت بسلسلة Homebrew كاملة قبل الحزم نفسها، لأن افتراض وجود brew مسبقاً هو أوّل موضع ينكسر فيه أي سكربت تهيئة.

المشروع مفتوح للمساهمات، مع طلب فتح issue قبل أي تغيير كبير — فقائمة الحزم قرار جماعي لا تفضيل فردي.

النتيجة والدروس

السكربت مجرّب على توزيعات Debian وعلى WSL وعلى macOS، وهذه هي الأنظمة الثلاثة التي يعمل عليها معظم الطلاب فعلياً.

  1. أتمتة الخطوة صفر لها أعلى عائد. الوقت الموفّر يتضاعف بعدد من يستخدم السكربت، لا بعدد مرات تشغيله.
  2. التصريح بالأنظمة المختبرة جزء من الواجهة. قائمة صريحة بما جُرّب تمنع تشغيل سكربت يطلب sudo على نظام لم يُختبر عليه أبداً.

الروابط

روابط المشروع

تاريخ البداية٢٢ يوليو ٢٠٢٦
الحالةDone

مشاركة المشروع