aosus.org
الحزم على لينكس

مقدمة لإدارة الحزم في توزيعات جنو/لينكس

في توزيعات جنو/لينكس، تحزيم البرنامج يكون كحزمة، وبعدها توزيعه من خلال المستودعات، وإدارته على نظام المستخدم من خلال مدير الحزم.

تحتوي التوزيعات خاصة الكبيرة منها كديبيان، فيدورا،أوبن سوزي وأرش عادةً على آلاف الحزم، والعديد منها عبارة عن تبعيات مطلوبة لحزم أخرى.

فماهي الحزمة؟ وماهي هذه التبعيات؟ وماهو المستودع؟ وماهومدير الحزم؟ سنحاول في هذا المقال الإجابة على هذه الأسئلة قدر الإمكان.

مفهوم الحِزم:

الحزم هي مجموعة من الملفات (أرشيف) المضغوطة في ملف واحد قابل للنقل والتخزين بسهولة، يحتوي هذا الأرشيف على ملفات البرنامج أو مجموعة من البرامج بالإضافة إلى بيانات الحزمة الوصفية (metadata) متمثلة في اسم الحزمة، اصدارها، تعريف لها، رخصتها، اعتماديات البرنامج، وغيرها من المعلومات والتي يمكن رؤيتها عند عرض معلومات عن الحزمة. قد يحتوي هذا الأرشيف على ملفات تنفيذية (scriptlets) تنفذ قبل أو بعد التثبيت لضبط البرنامج وتهيئته.

يطلق اسم حزمة على كل من التطبيقات ذات الواجهة الرسومية مثل فايرفوكس، برامج سطر الأوامر مثل dnf، ومكتبات البرامج مثل libsolv، أو مجموعة من وثائق ..

قد تحتوي الحزم على كود مصدري (والتي غالبا ما تكون على شكل أرشيف tar وملف البناء) وتسمى حزم مصدرية أو ملفات قابلة للتنفيذ وتسمى حزم ثنائية.

يتم بناء الحزم من طرف مشرف الحزمة (package maintainer) وهو إما مطور البرنامج الأصلي أو متطوع (عامل) في توزيعة ما يقوم بصيانته.

كما هو الحال مثلا في الصور يوجد العديد من تنسيقاتها مثل (…png,jpg,gif) يوجد أيضا العديد من تنسيقات (امتدادات) الحزم أشهرها deb (المحزمة بنظام DPKG) وحزم rpm (المحزمة بنظام RPM)، في الغالب حزم deb تعمل على جميع الحزم الديبيانية وحزم rpm تعمل على جميع التوزيعات المستندة إلى rpm مع بعض الاستثاناءات.

أنظمة التحزيم:

سنتكلم في هذه الفقرة عن نظامي التحزيم DPKG و RPM رغم وجود العديد من أنظمة التحزيم الأخرى مثل ebuild الخاص بجينتو، tar.gz الخاص بسلاكوير وأرش وغيرها الكثير كون غالبية التوزيعات تعتمد على النظامين الأولين كما أنهما أحدثا نقلة نوعية في طريقة تحزيم البرامج.

نظام التحزيم DPKG:

حزم deb عبارة عن أرشيف أر 1 يحتوي على ثلاث ملفاف وهي:

  • ملف binary-debian: ملف نصي يشير إلى نسخة ملف deb.
  • ملف control: أرشيف tar مضغوط يحتوي على البيانات الوصفية للحزمة مما يسهل الأمر على مدير الحزم للتعامل معها.
  • ملف data: أرشيف tar مضغوط يحتوي على جميع الملفات التي يجب استخراجها من الحزمة وتثبيتها على النظام.

قد تستخدم بعض الحزم صيغ ضغط مختلفة بحيث تتغير نهاية الملف (gz) إلى bz2 (صيغة bzip2) مثلا.

يتم استعمال حزم deb في جميع التوزيعات الديبيانية مثل ديبيان، أوبنتو، لينكس منت، بوب أو إس كما يتم استمالها في برنامج Termux على الأندرويد.

لمزيد من المعلومات يرجى الإطلاع على أساسيات نظام إدارة حزم دبيان.

نظام التحزيم RPM:

هي أرشيف cpio ذي حمولة مضغوطة يدعم أكثر من خوارزمية ضغظ (فيدورا حاليا تستخدم zstd) وهي اختصار ل RPM Package Manager وكان يعرف سابقا ب Redhat Package Manager لكن تخلت ريدهات عن الاسم بعد انظمام العديد من التوزيعات لاستعماله وتطويره مثل توزيعة سوزي لينكس إنتربرايز وأوبن سوزي وماندريفا وخليفتها ماجيا.

وقد تم اختيار حزم RPM لتكون الحزم المعتمدة من قبل معايير مؤسسة لينكس

تأتي حزم rpm على شكل حزم ثنائية (binary package) أو مصدرية (source package) وتسمى SRPMs مميزة باللاحقة .src.rpm متضمنة الملف المصدري والملف الذي يصف عملية البناء spec file.

يمكن تنزيل أي من الحزمتين مثلا في فيدورا من خلال خادم البناء كوجي أو باستعمال مدير الحزم

للحزم المصدرية:

dnf download –source package-name

للحزم الجاهزة:

dnf download package-name

لمزيد من الإطلاع يرجى زيارة الموقع الرسمي.


نظام dpkg و rpm أداتين منخفضتي المستوى تتيح عددا محددا من الأوامر لإدارة الحزم مثل التثبيت، الحذف، الترقية لكن مع وجود الحزمة الحديثة، عرض معلومات عن الحزمة والتحقق من التوقيع الإلكتروني لها لظمان سلامتها، مع ذلك لا يمكن لهما الاتصال بالمستودعات لجلب الحزم أو إدارة اعتمادياتها ولهذا برزت الحاجة لوجود مدير الحزم والذي يقوم بالأدوار السابقة وأكثر من ذلك مع الحفاظ على سلامة النظام.

الاعتماديات:

هي مجموعة من الحزم الواجب تثبيتها من أجل ضمان عمل البرنامج بشكل صحيح والتي يتم تعريفها في حقل مخصص عند تحزيم برنامج ما (حقل Requires في ملف spec في حزم rpm مثلا)، في حالة كانت هذه الاعتماديات موجودة في المستودعات المعرفة وغير مثبتة داخل التوزيعة فإن مدير الحزم يقوم بتثبيتها بطريقة آلية دون تدخل المستخدم.

قد تكون الاعتماديات غير لازمة لعمل البرنامج لكنها مقترحة أو موصى بها (Recommends) وهي الحزم التي تزيد في وضائف البرنامج الأساسي مثال ذلك مدير الملفات المستند للطرفية يحتاج حزمة لعرض الصور لكنها غير أساسية لعمله لذا يمكن تثبيتها منفصلة إن كان المستخدم يريد ذلك.

المستودعات:

المستودعات مكان ثابت على الأنترنت (خادم على الأنترنت) لتخزين الحزم والبيانات الوصفية الخاصة بها مثل اسم الحزمة ورقم الإصدار ووصف الحزمة واسم المستودع وما إلى ذلك، يتواصل مدير الحزم مع هذه المستودعات من أجل الحصول على الحزم لتحديث الجهاز.

يشيع بين المستخدمين (مستخدمي ويندوز) الحصول على البرامج من مواقع الأنترنت سواء كانت معروفة أو مشبوهة وفي أحسن الأحوال يتم تحميلها من مواقعها الأصلية، لكن هذه الطريقة مضنية ولا تمت بصلة للأتمتة وتحسين حياة المستخدم للأفضل، بالنسبة لتوزيعات لينكس فهي تقوم بجمع هذه الحزم في مستودعات مركزية يتم فيها التحقق من سلامة الحزم وجودتها، لكل توزيعة مستودعاتها ولا يمكن أن تعمل على باقي التوزيعات مع استثناء التوزيعات المبنية على أخرى والتي تستعمل نفس المستودعات، لذا يفضل اتباع الإرشادات الخاصة بها للحفاظ على سلامة النظام.

قد يكون لنفس التوزيعة عدة مستودعات رئيسية، يعود الأمر لسياسة الفصل بين الحزم بسبب الرخصة البرمجية كحال ديبيان تقسم الحزم الخاصة بها إلى ثلاث مستودعات على حسب رخصة البرنامج:

  • مستودع main: يضم الحزم الحرة والمفتوحة المصدر والتي تتوافق مع إرشادات دبيان للبرمجيات الحرة.
  • مستودع non-free: يضم حزما ترخيصها لا يتوافق مع هذه المبادئ لكن يمكن توزيعها دون قيود.
  • مستودع contrib: اختصارا contributions هو مخزن للبرمجيات مفتوحة المصدر والتي لا تعمل إلا بوجود بعض العناصر غير الحرة قد تكون هذه العناصر برمجيات من مستودع free-non مثلا.

تعمد بعض التوزيعات لاستخدام مستودعات طرف ثالث (third-party) لتوفير حزم يقوم عليها متطوعون كحال مستودع مستخدمي أرش وكوبر في فيدورا، أو لتلافي المشاكل القانونية كحال فيدورا مع مستودع rpm-fusion والذي يحتوي على برامج حرة لكن لا يسمح بتوزيعها داخل الولايات المتحدة الأمريكية لأسباب قانونية (تعريفات الفيديو على سبيل المثال)، تكون هذه المستودعات مستقلة عن التوزيعة وغير مفعلة. لمزيد من المعلومات يرجي زيارة التوثيق الخاص بالتوزيعة.

بما أن المستودعات عبارة عن خادم متصل بالأنترنت يرفع عليه الحزم، تقوم توزيعات لينكس بتكرار نسخ هذه الحزم بطريقة آلية على العديد من الخوادم المنتشرة في العالم وهو ما يعرف بالمرايا (mirrors)، لذا هي مجرد نسخة من نفس البيانات الموجودة على المستودع الأصلي وهذا من أجل سرعة أكبر في التنزيل، لذا يرجى اختيار أقرب المرايا للحصول على أكبر سرعة تنزيل واختيار بروتوكول الإتصال https لأمان أكبر.

مدير الحزم:

مدير الحزم ميزة محددة لتوزيعات جنو لينكس ويفضل العديد من المستخدمين استخدام توزيعة معينة استنادًا إليه (يوجد اعتبارات أخرى).

هو برنامج يقوم بتثبيت الحزم، ترقيتها، حذفها، وكل ما يتعلق بإدارتها بطريقة آلية وهو من أهم مكونات النظام ومن المزايا الفارقة في اختيار التوزيعة والذي يعطيها هويتها فيكفي أن تقول apt ليتبادر لذهنك التوزيعات الديبيانية أو تقول dnf فتتذكر التوزيعات الريدهاتية وهكذا.

من مزايا استخدام مدير الحزم:

  • البحث عن الحزم باسمها أو وصفها.
  • تثبيت الحزم، ترقيتها حذفها.
  • إدارة جميع التبعيات تلقائيًا عند اتخاذ إجراء ما على حزمة معينة.
  • عرض الحزم المثبتة على النظام أو عرض معلومات عنها أو حتى عرض ملفات الحزمة.
  • تحديث النظام وترقيته من إصدار لآخر.
  • إضافة أو حذف أو تعطيل مستودعات التوزيعة.

قد توجد بعض الأوامر في مدراء الحزم ولا توجد في البعض الآخر لكن في الغالب كلها تقوم بالمهام الرئيسية.

كيفية عمل مدير الحزم؟

الصورة من موقع أوبن سوزي

في البداية يتفاعل مدير الحزم مع البيانات الوصفية المخزنة في المستودعات فيقوم بتنزيلها، حيث يقوم بإنشاء ذاكرة تخزين مؤقت محلية للبيانات الوصفية على النظام. كما يمكن تحديثها أيضا وهو أمر ضروري خاصة في التوزيعات التي ترسل تحديثات دورية (في ديبيان apt update، مدير الحزم dnf يقوم بتحديث هذه المعلومات عند كل عملية افتراضيا).

عند محاولة تثبيت برنامج ما يقوم مدير الحزم بالبحث عنه في ذاكرة التخزين المؤقت هذه. إذا عثر على معلومات الحزمة يقوم بالاتصال بالأنترنت لتنزيل هذه الحزمة من مستودعها وتثبيتها إلى جانب اعتمادياتها إن وجدت.

مدير الحزم ليس بالضرورة برنامج يعتمد على الطرفية. يوجد مثلا synaptic وهو برنامج رسومي ل apt كما يوجد pamac برنامج رسومي ل pacman.

أمثلة لبعض مدراء الحزم الشهيرة:

يوجد الكثير من مدراء الحزم في جنو لينكس، يعمل كل منهم بشكل مختلف سواء في شكل المخرجات أو تنسيق الحزم الذي يتعاملون معه… وهذه قائمة لأشهرها إلى جانب التوزيعات المدعومة، وتنسيقات ملفات الحزم، مع وصف صغير.

  • مدير الحزم Apt:
  • التوزيعة: التوزيعات الديبيانية مثل ديبيان، أوبنتو، لينكس منت…
  • أداة إدارة الحزمة الأساسية: dpkg.
  • تنسيق الحزم: .deb

برنامج Apt اختصارا ل Advanced package tool وهو مدير الحزم الخاص بتوزيعة ديبيان والتوزيعات المستندة إليها، عبارة عن واجهة أمامية لأداة dpkg ذات المستوى المنخفض، لمزيد من الإطلاع يرجى زيارة هذا المقال: أداة سطر الأوامر APT – دليل الاستخدام العملي لإدارة الحزم على التوزيعات الدبيانية.

  • مدير الحزم dnf:
  • التوزيعة: التوزيعات الريدهاتية مثل فيدورا، ريدهات إنتربرايز لينكس، ألما وروكي لينكس بالإضافة إلى توزيعة ماجيا وهي مستقلة…
  • أداة إدارة الحزم الأساسية: rpm
  • تنسيق الحزم: .rpm

برنامج Dnf اختصارا ل Dandified Yum ، هو خليفة Yum. يقدم واجهة سهلة الاستخدام لمدير الحزم rpm، يمتلك Dnf العديد من التحسينات بما في ذلك زيادة الأداء، حل التبعيات بشكل أسرع ، وثائق مفصلة لواجهة برمجة التطبيقات الخاصة به، مع الحفاظ على الكثير من أوامر yum.
لمزيد من الاطلاع يرجى زيارة هذا المقال: دليل استخدام مدير الحزم Dnf

  • مدير الحزم Zypper:
  • التوزيعة: سوزي إنتربرايز لينكس وأوبن سوزي…
  • تنسيق الحزم: .rpm

برنامج Zypper هو أداة سطر الأوامر المستخدمة لإدارة الحزم على توزيعتي سوزي وأوبن سوزي. تمامًا مثل Dnf يقوم zypper بإدارة حزم ذات تنسيق rpm.

  • مدير الحزم Pacman:
  • التوزيعة: عائلة أرش مثل منجارو، إنديفور وأركو لينكس…
  • تنسيق الحزم: pkg.tar.gz

برنامج pacman هو مدير الحزم الأساسي لتوزيعات أرش يتميز بالسرعة واختصارات الأوامر لمزيد من الاطلاع يرجى زيارة هذا المقال: تعلم إدارة حزم البرامج مع باكمان Pacman وبعض إعداداته 1.

خاتمة:

مع وجود المستودعات حلت مشكلة البحث عن البرامج ومع مدير الحزم حلت مشكلة التعامل معها مما وفر الكثير من الوقت للمستخدم للتركيز أكثر على أداء المهام.

في الآونة الأخيرة خفت نجم مدير الحزم مع بروز تقنيات بعضها جديدة أساسها الحاويات مثل فلاتباك وسناب على مستوى سطح المكتب ودوكر وبودمان على الخوادم لكن الطريق لاستبدالها ما زال طويلا نوعا ما.

هذا الموضوع فائز بجائزة أسس للكتابة

هذا الموضوع أحد المواضيع الفائزة بجائزة أسس للكتابة، الجائزة الأولى في العالم العربي للتحفيز الكتابة عن البرمجيات الحرة.
تفاصيل أكثر عن الجائزة

المواضيع الفائزة لشهر أغسطس 2022

oth_mahammedi
فأئز بجائزة أسس للكتابة | Website |  + مقالات

كاتب فائز بجائزة أسس للكتابة.

حساب ماستودون:
oth_mahammedi@mastodon.social

Aosus