غالبا ما يرتبط اسم Gentoo بالتعقيد وكأنها مخصصة فقط للخبراء والمحترفين وهذا ما يجعل الكثير من المبتدئين يترددون حتى في القراءة عنها!
لذلك الشرح المقدم اليوم نحاول من خلاله فهم أساس هذه التوزيعة العريقة التي تتيح لك بناء نظام مفصل على مقاس جهازك.
من أين بدأت الحكاية؟ #
بدأ الموضوع في أواخر التسعينيات على يد مطور يُدعى Daniel Robbins من خلال تطوير توزيعة اسمها Enoch Linux. وكان هدفه بناء نظام يتكيف مع العتاد ويحتوي فقط على ما هو ضروري وقام بتحسين المترجم (Compiler) لدرجة حققت طفرة في السرعة مقارنة بالتوزيعات الأخرى وهنا تغير الاسم من Enoch إلى Gentoo على اسم فصيلة من البطاريق شائع عنها أنها الأسرع في السباحة عالميا.
بعد مواجهة مشكلة تجمد متكرر على جهازه توقف روبنز عن تطوير جنتو لفترة واستخدم FreeBSD عدة أشهر ومن هذا الأخير استلهم فكرة تطوير نظام إدارة الحُزم Portage الذي أصبح حجر الزاوية في جنتو.
مصطلحات أساسية لتسهيل الفهم #
الكود المصدري (Source Code) #
هو الشيفرة التي يكتبها مطورو البرنامج. عند تثبيت حُزمة من المصدر في جنتو يجلب نظام إدارة الحزم ملفات المصدر وينفذ خطوات إعدادها وبنائها بدلا من الاكتفاء بتنزيل نُسخة مبنية مسبقا.
البناء والتجميع (Compilation) #
التجميع هو تحويل الكود المصدري إلى ملفات قابلة للتشغيل باستخدام المترجم وهو جزء من عملية بناء البرنامج. في جنتو يمكن تنفيذ البناء محليا على جهازك مع تطبيق إعدادات البناء المناسبة التي تختارها.
نظام إدارة الحزم Portage #
هو نظام إدارة الحُزم الأساسي في جنتو مبني بلغة Python وBash. يدير تنزيل الحزم وبناءها وتثبيتها وتحديثها وحل الاعتماديات (Dependencies) التي تحتاجها وفقا للإصدارات والإعدادات المختارة.
ومن أهم أدوات التعامل معه الأمر emerge، الذي يدعم تثبيت الحزم من المصدر وكذلك الحزم المبنية مسبقا.
خيارات البناء (USE flags) #
هي خيارات تُخبر بها Portage بالميزات الاختيارية التي تريد تفعيلها أو تعطيلها في الحُزم. كأن تطلب دعم البلوتوث أو تستغني عن دعم الطباعة عندما توفر الحُزمة خيارات لذلك.
هذه الخيارات تتحكم في الميزات التي يتيحها وصف الحُزمة وليست وسيلة لاختيار كل سطر برمجي داخل البرنامج وقد يؤدي تفعيل ميزة إلى إضافة مكتبات تحتاجها هذه الأخيرة.
التبسيط من منظور المستخدم العادي #
الحُزم الجاهزة: بدلة من المتجر #
تخيل أنك ذهبت لشراء بدلة جاهزة من المتجر. الأمر سريع ومريح وتختار من المقاسات والتصاميم المتاحة ما يناسبك، لكن قد ترغب في تعديل بعض التفاصيل لأنها صُممت لتناسب أكثر من شخص.
Gentoo: بدلة عند الخياط #
من ناحية جنتو، تخيل أنك ذهبت إلى خياط ماهر وهو هنا يمثل مدير الحُزم Portage. يسألك عن المقاسات ونوع القماش وتفاصيل الجيوب التي تريدها وهي تمثل خيارات USE flags ثم يُنفذ العمل حسب اختياراتك المتاحة.
الأمر يتطلب وقتا للقياس والانتظار، أي وقت البناء، لكن النتيجة قد تكون أقرب لاحتياجاتك. وإذا وجدت بدلة جاهزة تناسب هذه الاختيارات فيمكنك توفير الانتظار وهذا يُقرب فكرة استخدام الحُزم الجاهزة إلى جانب البناء من المصدر.
كيف يعمل البناء والتخصيص في Gentoo؟ #
في توزيعات مثل Ubuntu وMint تُوزع البرامج عادة في حُزم جاهزة بُنيت بإعدادات مناسبة لشريحة واسعة من المستخدمين والأجهزة. هذه الطريقة مريحة وتوفر وقت البناء على جهاز المستخدم.
أما عند البناء من المصدر في جنتو، فيجلب Portage الكود المصدري وينفذ خطوات البناء وفقا لوصف الحُزمة وإعداداتك. يعني بالمختصر يمكنك اختيار ميزات معينة قبل تثبيت البرنامج ويتولى مدير الحُزم التعامل مع الاعتماديات المرتبطة بهذه الاختيارات.
قد يساعد تعطيل ميزة اختيارية على الاستغناء عن بعض اعتمادياتها لكن هذا لا يعني إمكانية حذف كل مكون لا تستخدمه أو ضمان غياب أي كود غير ضروري. حدود التخصيص تعتمد على البرنامج والحُزمة والخيارات المتاحة لهما.
هل يجب بناء كل شيء من المصدر؟ #
تدعم جنتو أيضا الحُزم الثنائية الجاهزة (Binary Packages) ويمكن لـ Portage الجمع بينها وبين الحُزم المبنية محليا. لذلك لا يلزم تجميع كل برنامج على جهازك.
الاستفادة من الحُزمة الجاهزة تتطلب توافقها مع إعدادات النظام والحُزم الأخرى وإذا كانت خيارات USE المطلوبة مختلفة عن الخيارات التي بُنيت بها الحُزمة المتاحة، فقد يحتاج Portage إلى بنائها من المصدر بدلا من استخدامها.
هل البناء محليا يعني أداء أفضل دائما؟ #
تُتيح جنتو ضبط خيارات المترجم مثل CFLAGS وCXXFLAGS لتحديد إعدادات التحسين وتعليمات المعالج المستخدمة عند بناء برامج C وC++. هذه الإعدادات منفصلة عن دور USE flags في اختيار الميزات.
لكن البناء محليا لا يضمن أن يُصبح كل برنامج أسرع أو أن تزيد استجابة النظام بشكل ملحوظ. الفائدة تعتمد على البرنامج والعتاد والإعدادات وطبيعة الاستخدام، بينما البناء نفسه يحتاج إلى وقت وموارد.
كما أن إعدادات التحسين المبالغ فيها قد تُسبب فشل البناء أو مشكلات عند التشغيل وهو ما يُنبه إليه توثيق إعدادات Portage. لذلك ميزة جنتو الأساسية هنا هي مرونة الاختيار أما أثر التحسين على الأداء فيحتاج إلى قياس في الاستخدام الفعلي.
ما الفرق بينها وبين Slackware؟ #
إذا قارناها بتوزيعة تقليدية مثل Slackware التي تناولناها سابقا، فالفارق يظهر بوضوح في طريقة إدارة الحُزم. تُقدم سلاكوير حُزم رسمية جاهزة بينما تترك أدواتها الأساسية مسؤولية توفير الاعتماديات للمستخدم، مع إمكانية بناء حُزم إضافية باستخدام SlackBuilds.
أما جنتو فتجعل البناء من المصدر جزءا أساسيا من إدارة الحُزم مع دعم الحُزم الجاهزة أيضا ويتولى Portage حل الاعتماديات وتثبيتها وفقا لاختياراتك، مع احتمال الحاجة إلى تدخل منك عند تعارض بعض الإعدادات أو متطلبات الحُزم.
ختاما #
الفكرة من جنتو كخُلاصة تتعلق بالمرونة في اختيار مكونات النظام وميزات البرامج وطريقة بنائها مع مدير حُزم يدير الكثير من التفاصيل بالنيابة عنك.
هذه المرونة تتطلب وقتا للتعلم والإعداد والصيانة لكنها تساعدك على فهم العلاقة بين البرامج واعتمادياتها وخيارات بنائها عن قرب.
نتمنى أن تكون الصورة قد وصلت ولو بالشيء القليل.
روابط ذات صلة #
- مشروع Portage الرسمي
- شرح USE flags في دليل تطوير جنتو
- توثيق إعدادات Portage والبناء
- رواية Daniel Robbins عن تأثير FreeBSD وتطوير Portage