






السمعة:
كما ذكرنا سابقاً ان اللينكس لديه توزيعات ، وأن بالمختصر التوزيعات عبارة عن تجميعة من لينكس وادوات جنو و برامج الواجهة الرسومية في حالة انظمة سطح المكتب .
ولكن بجانب هذه التجميعة يوجد اهم شيء وهو ما يميز التوزيعات وهو مدير الحزم (package manager ) فما هو مدير الحزم ؟!
مدير الحزم :
يعد مدير الحزم أداة تتيح للمستخدمين تثبيت حزم البرامج (software packages ) وإزالتها وترقيتها وتكوينها وإدارتها على نظام التشغيل .
وحزمة البرنامج هي عباره عن حزمة لكل ملفات البرامج من ملفات التشغيل و ملفات الإعدادات والمكتبات المختلفة التي يعتمد عليها وهكذا .
يمكن أن يكون مدير الحزم تطبيقًا ذو واجهة رسومية مثل متجر التطبيقات كبرنامج software center أو أداة سطر أوامر مثل apt-get أو pacman .
في البداية ، كان يتم تثبيت البرامج من كود المصدر الخاص بها.
حيث كان يتم الرجوع إلى ملف (يُسمى عادةً readme) ومعرفة مكونات البرامج التي يحتاجها وموقع ملفات التشغييل.
غالبًا ما يتم تضمين برنامج نصي للتكوين (compile) أو ملف تعريفي.
سيتعين عليك تجميع البرنامج بمفردك بالإضافة إلى التعامل مع جميع الاحتياجات (dependencies) (حيث تتطلب بعض البرامج تثبيت برامج أخرى) وتقوم بهذه العمليات بنفسك .
للتخلص من هذا التعقيد، أنشأت توزيعات Linux تنسيق تجميع الحزم الخاص بها لتزويد المستخدمين بملفات تشغيل جاهزة للاستخدام (برامج مجمعة مسبقًا) لتثبيت البرامج إلى جانب بعض البيانات التعريفية (كرقم الإصدار والوصف) والاحتياجات المختلفة (dependencies) .
مثال بسيط على ذلك يمكن ان يوضح الصورة بشكل اكبر وهو :
انه عند شعورك بالجوع مثلاً كان يجب عليك البحث عن المقادير وتجميعها وطبخ الوجبة ... ولكن اصبح الأمر بعد ذلك انك تستطيع ان تطلب الوجبة جاهزة مباشرةً . وهذا الدور الذي يقوم به مدير الحزم .
في منتصف التسعينيات تقريبًا، أنشأت دبيان (Debian) نظام التجميع DEB وأنشأت Red Hat Linux نظام التجميع RPM (اختصار لـ Red Hat Package Manager).
لا يزال تجميع الكود المصدري موجودًا ولكنه أصبح اختياريًا الآن.
وجب الإشارة الى ان مدير الحزم ليس فقط لنظام التشغيل او لينكس ولكن يمكن ايضاً ان تجد مدير حزم لبرامج أو لغات برمجة مختلفة.
حيث يوجد مدير حزم PIP لحزم Python فقط مثلاً . و حتى محرر Atom لديه مدير الحزم الخاص به .
مفهوم اخر يجب ان تكون على دراية به وهو مفهوم المستودعات او ما يسمى بالـ repositories
تحتوي جميع توزيعات Linux تقريبًا على مستودعات برامج وهي في الأساس مجموعة من حزم البرامج.
تحتوي المستودعات على حزم برامج من أنواع مختلفة .
تحتوي المستودعات أيضًا على ملفات بيانات تعريف تحتوي على معلومات حول الحزم مثل اسم الحزمة ورقم الإصدار ووصف الحزمة واسم المستودع وما إلى ذلك .
يتفاعل مدير الحزم في نظامك أولاً مع البيانات التعريفية (metadata) . حيث يقوم مدير الحزم بإنشاء ذاكرة محلية على الجهاز لتخزين مؤقت للبيانات التعريفية على نظامك.
عندما تقوم بتشغيل أمر التحديث الخاص بمدير الحزم (على سبيل المثال apt update)، فإنه يقوم بتحديث ذاكرة التخزين المؤقت المحلية لبيانات التعريف عن طريق الإشارة إلى البيانات التعريفية من المستودع .
عند تشغيل أمر التثبيت الخاص بمدير الحزم لديك (على سبيل المثال apt install )، يشير مدير الحزم إلى ذاكرة التخزين المؤقت هذه. وإذا عثر على معلومات الحزمة في ذاكرة التخزين المؤقت، فإنه يستخدم اتصال الإنترنت للاتصال بالمستودع المناسب ويقوم بتنزيل الحزمة أولاً ثم تثبيتها على نظامك.
قد تحتوي الحزمة على احتياجات اخرى (dependencies) . وهذا يعني أنه قد يتطلب تثبيت حزم أخرى.
غالبًا ما يعتني مدير الحزم بهذه الاحتياجات ويقوم بتثبيتها تلقائيًا مع الحزمة التي تقوم بتثبيتها. (ملاحظة)
يختلف مديرو الحزم بناءً على نظام التجميع ولكن قد يحتوي نظام التجميع نفسه على أكثر من مدير حزم واحد.
على سبيل المثال، يحتوي RPM على مديري حزم Yum وDNF.
وبالنسبة إلى DEB، لديك مديرو الحزم كـ apt-get و aptitude .
بالاضافة الى ان انظمة arch تستخدم مدير الحزم pacman .
ولذلك يمكنك دائماً ان تجد انه عند الحديث حول التوزيعات المختلفة من اللينكس يتم ارجاعها الى احد التوزيعات الرئيسية التي تستخدم احد تلك مديري الحزم .
فمثلاً توزيعة الكالي تم بنائها على توزيعة الـ Debian كما الحال مع الـ Ubuntu ولذلك تجد ان التعامل معهم كمستخدم سيكون متشابه لأنهم يستخدمون نفس مدير حزم apt .
ولكن عند استخدامك لتوزيعة كتوزيعة fedora التي تم بنائها على توزيعة Red-hat ستجد انها تختلف عن الكالي و الاوبونتو حيث انها تستخدم مدير حزم مختلف وهو DNF ولكن غير ذلك فجميع التوزيعات متشابهة حيث تعتمد على اللينكس وأدوات جنو .
وجب الاشارة ايضاً الى انه قد تكون المستودعات (repositories) مختلفة من توزيعة الى اخرى وهذا ما يؤدي في بعض الأحيان (شديدة الندرة) الى ان يكون هناك بعض البرامج موجودة فقط في مستودعات معينة .
وحابب ان أعرض بعض الاوامر المهمة في هذا المنشور (سنتطرق لموضوع مدير الحزم واوامره وإعدادته في المستقبل بتفصيل اكبر) .
فكما ذكرنا انه الحزم والبرامج تكون على المستودعات و مدير الحزم يقوم بالتواصل مع هذه المستودعات وتنزيل الحزم المطلوبة .. والسؤال هنا ! كيف يمكن ان ابحث في هذه المستودعات وتحديد الحزمة او البرنامج الذي احتاجه :
debian and debian-based
Bash:
sudo apt-cache search اسم_الحزمة
arch and arch-based
Bash:
sudo pacman -Ss اسم_الحزمة
سيتم البحث عن اسم الحزمة المطلوبة ويعرض التفاصيل والمعلومات حول الحزمة كالاصدار و غيره .
يجب الاشارة الى ان مدير الحزم كما ذكرنا يقوم بالبحث اولاً في ذاكرة محلية على الجهاز cache ولذلك اذا لم تكن قمت بتحديث هذه الذاكرة اولاً في بعض الاحيان لا تجد الحزمة المطلوبة ... فينصح دائماً قبل البحث او تثبيت اي اداة او حزمة ان تقوم بتحديث الـ cache عن طريق احد الاوامر التالية :
Debian and Debian-based
Arch and Arch-based
Bash:
sudo apt update
Bash:
sudo pacman -Sy
التعديل الأخير: