إدارة الحزم هي أحد الميزات الرئيسة التي تتحفنا بها توزيعات لينكس. و طريقة التحزيم وأدوات إدارة الحِزم قد تختلف و قد تتوافق بين التوزيعات على حسب عائلة التي بنية عليها التوزيعة أو البرنامج الذي قد يتبناه المشروع ، و هذا النمط في إدارة هو شبيه لمعظم الأنظمة الشبيهة بيونكس , أي عبارة عن آلية مركزية لإيجاد وتثبيت البرمجيات. تُوزَع البرمجيات عادة في شكل حزم، مُخزنة في مستودعات. التعامل مع الحزم يُعرَف بإدارة الحزم. و توفر الحزم المكونات الأساسية لنظام التشغيل ، مع المكتبات المشتركة أي لاعتماديات ، و كذلك التطبيقات، و الخدمات و الوثائق. يقوم نظام إدارة الحزم بأكثر من تثبيت البرمجيات فقط . فهو يوفر أيضًا أدوات لترقية الحزم المثبتة حاليًا.كذلك يساعد مستودعات الحزم على التأكد من أن الشيفرة فُحِصَت للاستخدام على نظامك، وأن المطورين والمشرفين وافقوا على نُسخ البرمجيات المُثبتة و هذا يدخل في تأمين هذا النظام . في درس اليوم سنتعرف على أساسيات إدارة الحزم بشكل نظري و على الطريقة أو الألية التي يتم بها تثبيت البرامج على نظام لينكس , كذلك سنتعرف على عدة مفاهيم شائعة على هذا النظام مثل مدير الحزم و اعتماديات و غيرها .
أساسيات إدارة الحزم على نظام لينكس :
لنبدأ بالحديث عن مفهوم البرامج أولا. في عالم الإعلاميات يقصد بكلمة برنامج كل تطبيق ( أي مجموعة من الأكواد ) يكون الكمبيوتر قادرا على تشغيلها و تؤدي حال التشغيل هدفا معينا، فنجد برامج هدفها التواصل مثل برامج المحادثة و برامج هدفها تصفح الانترنت مثل فايرفوكس و انترنت اكسبلورر... و غيرها الكثير من البرامج. و أغلب أنظمة التشغيل، كويندوز و لينكس، حال تثبيتها تثبت برامج عديدة معها، لكنها غالبا ما تكون محدودة و مقتصرة على الأساسيات، كمتصفح ملفات (مثلا Nautilus في Ubuntu و Windows Explorer في Windows ) و قارىء ملفات نصية بسيط (مثلا Text Editor في Ubuntu و Notpad في Windows ) و غيرها من الأساسيات.
في لينكس تختلف البرامج المثبتة بدئيا مع النظام حسب التوزيعة و بيئة المكتب التي تستخدمها، فنجد توزيعات تثبت برامج عديدة و أخرى تكتفي بالأساسي فقط و أخرى تدع حرية الاختيار للمستخدم حال التثبيت. لكن مهما كثرت البرامج التي من الممكن أن تثبث بدئيا مع النظام إلا أن المستخدم و لابد لسبب ما سيرغب في إضافة برنامج أو برامج معينة في وقت ما. و هنا تقع المشكلة .
الطريق المعتاد عند الجميع وهي تثبيت برنامج ما في ويندوز تمر عموما بالمراحل التالية :
البحث عن البرنامج في الأنترنت
- تحميل الملف التنفيذي لتثبيت البرنامج (exe) سواء مضغوط أو بصيغته الأصلية من الأنترنت
- تثبيت البرنامج بالضغط على ملفه التنفيذي و اتباع next...next..next
- أخيرا يمكنك تشغيل البرنامج من قائمة كل البرامج أو أيقونة توضع على سطح المكتب ( هذا في حال كان البرنامج مجانيا و إلا فعليك شراء مفتاح للبرنامج )
ملاحظة :
يمكن بعد تثبيت البرنامج أو أثناء محاولة تثبيته أن يتوقف أو يحدث مشاكل بالنظام كاملا لأنه غير متوافق مع نسخة ويندوز لديك أو يحتاج لبرنامج معين ليشتغل , إذن أنت، كمستخدم، مطالب بالتحقق من توافقية البرنامج الذي تريد أن تثبته قبل تحميله و إلا فإن كل جهدك سيضيع هباء في حال عدم توافقه !
و لكي أبسط عليكم المفاهيم سنأخذ توزيعة أبونتو على سبيل المثال كونها أشهر و سنعالج طريقة تثبيت البرامج عليها :
يضم أوبنتو برنامجا يعمل دور الوسيط بين المستخدم و مخازن ( سرفرات ) عديدة تضم الاف البرامج الموجهة خصوصا له و تتفق مع فلسفته و تنظيمه. مركز برمجيات أوبنتو - Ubuntu Software Center، و قد تحول إلى gnome software center بدء من الإصدار 16.04LTS البرنامج الذي نتحدث عنه، يضم لائحة بالبرامج الموجودة على المخازن الموفرة من طرف أوبنتو مرتبة حسب نوعها. المستخدم يكتفي بالبحث عن البرنامج أو البرامج التي يريد إضافتها و تأكيد اختياره ليقوم مركز برمجيات أوبنتو بتحميل البرامج المختارة، تثبيتها و إضافتها للائحة البرامج ذات نفس التخصص في قائمة برامج أوبنتو المثبتة و هذا أمر بسيط جدا و يغنيك عن أي تعقيدات يقوم بها النظام.
مركز البرمجيات بصفة عامة على توزيعة أوبنتو يضمن للمستخدم تحميل و تثبيت البرامج المتوافقة مع نظامه 100% و الخالية من أي فيروسات أو أدوات تجسس لأن المخازن التي يحمل منها تضم البرامج المجربة و الموجهة خصيصا لاوبنتو. إضافة للتثبيت يقوم مركز البرمجيات بفحص كل ما يلزم البرنامج المراد تثبيته ليشتغل و يقوم بإضافة هذه المستلزمات لقائمة التثبيت : تقنيا نتحدث هنا عن ما يسمى بالارتباطات أو اعتماديات . للتبسيط نتخيل السيناريو التالي : مثلا ليشتغل البرنامج "x " سنحتاج لمكتبة " xy "، في هذه الحالة يقوم مدير الحزم بفحص الارتباطات للبرنامج " x " و يجد أنه يحتاج المكتبة " xy " فيضيف المكتبة " xy " ليثبتها معه. كل هذا يتم بسرعة، بسهولة، دون تدخل المستخدم أو حتى حاجته للاهتمام بمعرفة أين سيتم تثبيت البرنامج. لكن كل شيئ يتم بموافقته من خلال تأكيد خياراته بإدخال كلمة السر لحسابه و ذلك للحفاض على أمان النظام .
تعرفنا الآن على الشق الرسومي من الموضوع إذا ماذا عن سطر أوامر كيف يمكن القيام بهذه العملية وماهي الأوامر أو البرمجيات التي ستساعدك على ذلك ؟
أغلب هذه البرمجيات أو الأدوات غير مترابطة، وتعمل على نفس قاعدة البيانات للحزمة، بعض هذه الأدوات يحاول تقديم واجهات ذات مستوى عالٍ لأنظمة الحِزم، بينما تركّز أدوات أخرى على تزويد وظيفة في مستوى متدنّي.
Apt
يعتبر الأمر Apt الأكثر استخدامًا ، هدفه الرئيسي هو عمل ارتباط مع المستودعات البعيدة التي يتم الاحتفاظ بها من قِبل فريق الحِزم الخاص بالتوزيعة، بالإضافة إلى تنفيذ العمليات على الحِزم المتاحة.
تعمل مجموعة apt بشكل عام عن طريق سحب المعلومات من المستودعات إلى الذاكرة المؤقتة التي يتم إدارتها من خلال النظام المحلي.
الأمر apt يستخدم لتحديث الذاكرة المؤقتة المحلية، ويستخدم أيضًا للتعديل على حالة الحِزمة و نقصد تنصيب أو إزالة الحزمة من النظام أو تحديثها أيضا .
Apt-cache
أحد الأوامر الأخرى المهمة في مجموعة apt هو الأمر apt-cache، والذي يستخدم الذاكرة المؤقتة المحلية ليستعلم عن المعلومات المتعلقة بالحِزم المتاحة في مستودعاته.
على سبيل المثال، في أي وقت ترغب في البحث عن حزمة معينة أو أداة لتنفيذ وظيفة معينة، فإن الأمر apt-cache يُعتبر نقطة جيدة للبداية. يمكن أن تكون مفيدة أيضًا لمعرفة أيّ إصدار حزمة سيتم استخدامه من لأي إجراء.
كما وتعتبر apt-cache مفيدة في حالة معلومات الاعتمادية، والاعتمادية العكسية.
Aptitude
يقوم الأمر aptitude بدمج الكثير من وظائف الأمرين المذكورين أعلاه، تتوفر فيه ميزة العمل كأداة سطر الأوامر حيث تدمج وظائف الأداتين المذكورتين أعلاه، وتستطيع أيضًا العمل باستخدام ncurses والتي تعتبر واجهة قائمة نصية.
عند العمل من سطر الأوامر، العديد من الأوامر تقوم بتمثيل الإمكانيات الخاصة بـ apt-get و apt-cache بالضبط. لن نناقش aptitude باستفاضة في هذا المقال بسبب التداخل الواضح في وظائف الأوامر.
إذا كنت تفضل هذه الأداة فإنك تستطيع دومًا استخدام aptitude بالمبادلة مع apt-get أو apt-cache.
Dpkg
بينما تركّز الأدوات السابقة على إدارة الحِزم المحفوظة في المستودعات، إلا أن الأمر dpkg يمكن استخدامه ليعمل على حزم deb. بشكل منفرد. هذا الأمر مسؤول بالضبط عن الأعمال التي تجري في كواليس الأوامر المذكورة أعلاه.