مدير حزم RPM

RPM (كان يُعرف سابقًا باسم Red Hat Package Manager ، وهو الآن اختصار متكرر لـ RPM Package Manager ) هو نظام إدارة حزم مجاني ومفتوح المصدر . [ 7 ] يشير اسم RPM إلى تنسيق الملف وبرنامج إدارة الحزم نفسه. صُمم RPM في الأساس لتوزيعات لينكس ؛ ويُعد تنسيق الملف هو التنسيق الأساسي لحزم لينكس القياسية ..rpm

على الرغم من أن نظام RPM صُمم في الأصل للاستخدام في نظام Red Hat Linux ، إلا أنه يُستخدم الآن في العديد من توزيعات Linux مثل PCLinuxOS و Fedora Linux و AlmaLinux و CentOS و openSUSE و OpenMandriva و Oracle Linux . كما تم نقله إلى بعض أنظمة التشغيل الأخرى ، مثل Novell NetWare (ابتداءً من الإصدار 6.5 SP3) و IBM AIX (ابتداءً من الإصدار 4) [ 8 ] وIBM i [ 9 ] و ArcaOS [ 10 ] . يمكن أن تحتوي حزمة RPM على مجموعة متنوعة من الملفات. معظم ملفات RPM هي "حزم RPM ثنائية" (أو BRPMs) تحتوي على النسخة المُجمّعة من بعض البرامج. وهناك أيضًا "حزم RPM مصدرية" (أو SRPMs) تحتوي على الشفرة المصدرية المستخدمة لبناء حزمة ثنائية. تحتوي هذه الحزم على وسم مناسب في رأس الملف يميزها عن حزم RPM الثنائية العادية، مما يؤدي إلى استخراجها إلى المسار /usr/src عند التثبيت. عادةً ما تحمل ملفات SRPM امتداد الملف ".src.rpm" (.spm على أنظمة الملفات التي تقتصر على 3 أحرف امتداد، على سبيل المثال DOS FAT القديم ).

تاريخ

تمت كتابة RPM في الأصل عام 1995 بواسطة إريك ترون ومارك إيوينغ، استنادًا إلى تجاربهم مع pmsو rpp، وهما مديران سابقان للحزم، و pm، وهو مدير حزم تعايش لفترة وجيزة مع RPM.

pmكتبه ريك فيث ودوغ هوفمان في مايو 1995 لشركة ريد هات سوفتوير. تأثر تصميمه وتنفيذه بشكل كبير pmsبنظام إدارة الحزم الذي طوره فيث وكيفن مارتن في خريف عام 1993 لتوزيعة بوغوس لينكس. pmيحافظ على نموذج " المصادر الأصلية + التصحيحات" الخاص بنظام إدارة الحزم pms، مع إضافة ميزات جديدة وإزالة القيود التعسفية الموجودة في التنفيذ. pmيوفر دعمًا مُحسَّنًا لقواعد البيانات لتتبع الحزم المثبتة والتحقق منها. [ 5 ] [ 11 ] [ 12 ]

سمات

بالنسبة لمسؤول النظام الذي يقوم بتثبيت البرامج وصيانتها، فإن استخدام إدارة الحزم بدلاً من البناء اليدوي يوفر مزايا مثل البساطة والاتساق وإمكانية أتمتة هذه العمليات وجعلها غير تفاعلية. يستخدم rpm قاعدة بيانات Berkeley DB كقاعدة بيانات خلفية، مع أنه منذ الإصدار 4.15 في عام 2019، يدعم بناء حزم rpm بدون Berkeley DB –disable-bdb. [ 13 ]

تشمل ميزات RPM ما يلي:

  • يمكن التحقق من حزم RPM تشفيرياً باستخدام GPG و MD5
  • يتم تضمين الأرشيفات المصدرية الأصلية (على سبيل المثال .tar.gz، ) في حزم إدارة البرامج الثابتة (SRPMs)، مما يجعل عملية التحقق أسهل.tar.bz2
  • تحديث دلتا : يمكن لملفات PatchRPMs وDeltaRPMs، وهي المكافئ لملف التصحيح في RPM ، تحديث البرامج المثبتة بواسطة RPM بشكل تدريجي.
  • التقييم التلقائي للتبعيات أثناء عملية البناء.

العمليات المحلية

قد تأتي الحزم من توزيعة معينة (مثل Red Hat Enterprise Linux ) أو يتم إنشاؤها لها من قِبل جهات أخرى (مثل RPM Fusion لـ Fedora Linux). [ 14 ] قد تُسبب التبعيات الدائرية بين حزم RPM المترابطة (ما يُعرف بـ " جحيم التبعيات ") مشاكل؛ [ 15 ] في مثل هذه الحالات، يتطلب أمر التثبيت الواحد تحديد جميع الحزم ذات الصلة.

المستودعات

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

الواجهات الأمامية

تُسهّل العديد من واجهات المستخدم الأمامية لحزم RPM عملية الحصول على حزم RPM وتثبيتها من المستودعات، وتساعد في حلّ تبعياتها. وتشمل هذه الواجهات ما يلي:

قاعدة بيانات تثبيت RPM المحلية

يعمل مدير الحزم في الخلفية بواسطة قاعدة بيانات RPM، المخزنة في [موقع قاعدة البيانات] /var/lib/rpm. تستخدم هذه القاعدة Berkeley DB كخادم خلفي. تتكون من قاعدة بيانات واحدة ([موقع قاعدة البيانات Packages]) تحتوي على جميع المعلومات الوصفية لحزم RPM المثبتة. يتم إنشاء قواعد بيانات متعددة لأغراض الفهرسة، حيث يتم نسخ البيانات لتسريع الاستعلامات. تُستخدم قاعدة البيانات لتتبع جميع الملفات التي يتم تغييرها وإنشاؤها عند تثبيت المستخدم (باستخدام RPM) لحزمة ما، مما يُمكّن المستخدم (عبر RPM) من التراجع عن التغييرات وإزالة الحزمة لاحقًا. في حال تلف قاعدة البيانات (وهو أمر وارد في حال إيقاف عميل RPM ) ، يمكن إعادة إنشاء قواعد بيانات الفهرسة باستخدام الأمر [ 18 ]rpm --rebuilddb .

وصف

على الرغم من أن تنسيق RPM هو نفسه عبر توزيعات لينكس المختلفة ، إلا أن الاتفاقيات والإرشادات التفصيلية قد تختلف بينها.

اسم ملف الحزمة وعلامتها

يتم تسليم حزمة RPM في ملف واحد، وعادةً ما يكون اسم الملف بالصيغة التالية:

<name>-<version>-<release>.src.rpmبالنسبة لحزم المصدر، أو
<name>-<version>-<release>.<architecture>.rpmللملفات الثنائية.

على سبيل المثال، في اسم ملف الحزمة libgnomeuimm-2.0-2.0.0_3.i386.rpm، <name>يكون libgnomeuimm، و <version>، 2.0و <release>، 2.0.0_3و <architecture>. i386أما اسم حزمة المصدر المرتبطة فسيكون .libgnomeuimm-2.0-2.0.0_3.src.rpm

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

يحتوي دليل التشغيل أيضًا على ملصق العبوة ، والذي يتضمن المعلومات التالية:

  • اسم البرنامج
  • إصدار البرنامج (الإصدار المأخوذ من المصدر الأصلي للبرنامج )
  • إصدار الحزمة (عدد مرات إعادة بناء الحزمة باستخدام نفس إصدار البرنامج). يُستخدم هذا الحقل أيضًا غالبًا للإشارة إلى التوزيعة المحددة التي صُممت الحزمة من أجلها، وذلك بإضافة سلاسل نصية مثل "mdv" (سابقًا "mdk") ( ماندريفا لينكس )، و"mga" ( ماجيا )، و"fc4" ( فيدورا كور 4)، و"rh9" ( ريد هات لينكس 9)، و"suse100" ( سوزي لينكس 10.0)، إلخ.
  • البنية التي تم بناء الحزمة من أجلها (i386، i686، x86_64، ppc، إلخ).

لا يشترط أن تتطابق حقول تسمية الحزمة مع اسم الملف.

تغليف المكتبة

تُوزَّع المكتبات في حزمتين منفصلتين لكل إصدار. تحتوي إحداهما على الكود المُجمَّع مسبقًا للاستخدام أثناء التشغيل، بينما تحتوي الأخرى على ملفات التطوير ذات الصلة، مثل ملفات الرأس، وما إلى ذلك. تُضاف اللاحقة "-devel" إلى اسم هذه الحزم. يجب على مسؤول النظام التأكد من تطابق إصدارات حزم البرامج وحزم التطوير.

التنسيق الثنائي

التنسيق ثنائي ويتكون من أربعة أقسام: [ 7 ]

  • الملف الرئيسي، الذي يحدد الملف كملف RPM ويحتوي على بعض الرؤوس القديمة.
  • التوقيع، الذي يمكن استخدامه لضمان النزاهة و/أو المصداقية.
  • يحتوي رأس الملف على بيانات وصفية تتضمن اسم الحزمة، والإصدار، والبنية، وقائمة الملفات، وما إلى ذلك.
  • ملف مضغوط ( الحمولة )، عادةً ما يكون بتنسيق cpio ، ومضغوط باستخدام gzip . rpm2cpioتُمكّن الأداة من استرجاع ملف cpio دون الحاجة إلى تثبيت حزمة RPM. [ 19 ]
    • يتطلب معيار لينكس الأساسي استخدام gzip، لكن حزم فيدورا 30 مضغوطة باستخدام xz ، وقد تكون حزم فيدورا 31 مضغوطة باستخدام zstd . [ 20 ] كما يمكن للإصدارات الحديثة من RPM استخدام ضغط bzip2 أو lzip [ 21 ] أو lzma .
    • يدعم تنسيق RPM 5.0 استخدام xar للأرشفة.

ملف المواصفات

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

عادة ما يتم توزيع ملفات المواصفات داخل ملفات SRPM، والتي تحتوي على ملف المواصفات المعبأ مع شفرة المصدر.

SRPM

تُعدّ حزمة RPM النموذجية برنامجًا مُجمّعًا مسبقًا وجاهزًا للتثبيت المباشر. كما يُمكن توزيع شفرة المصدر الخاصة به. ويتم ذلك من خلال حزمة SRPM، التي تتضمن أيضًا ملف "SPEC" الذي يصف البرنامج وكيفية بنائه. وتتيح حزمة SRPM للمستخدم تجميع الشفرة، وربما تعديلها.

قد تحتوي حزمة البرامج على نصوص برمجية مستقلة عن النظام الأساسي فقط. في هذه الحالة، يمكن للمطور توفير ملف SRPM فقط، وهو ملف RPM قابل للتثبيت.

NOSRC

هذه نسخة خاصة من SRPM. تحتوي على ملف "SPEC" وتصحيحات اختيارية، ولكنها لا تتضمن المصادر (عادةً بسبب الترخيص). [ 22 ]

شوكات

اعتبارًا من يونيو 2010 هناك نسختان من RPM قيد التطوير: إحداهما بقيادة مشروع فيدورا وريد هات، والأخرى بقيادة مجموعة منفصلة بقيادة أحد القائمين السابقين على صيانة RPM، وهو موظف سابق في ريد هات.

RPM.org

كان أول تعديل رئيسي لرمز مجتمع rpm.org في يوليو 2007؛ وتم إصدار الإصدار 4.8 في يناير 2010، والإصدار 4.9 في مارس 2011، والإصدار 4.10 في مايو 2012، والإصدار 4.11 في يناير 2013، والإصدار 4.12 في سبتمبر 2014، والإصدار 4.13 في يوليو 2015 .

يتم استخدام هذا الإصدار بواسطة توزيعات مثل Fedora Linux و Red Hat Enterprise Linux والمشتقات و openSUSE و SUSE Linux Enterprise و Unity Linux و Mageia و [ 23 ] OpenEmbedded و Tizen و OpenMandriva Lx (المعروفة سابقًا باسم Mandriva ).

RPM الإصدار 5 (متوقف عن العمل)

واصل جيف جونسون، المسؤول عن صيانة نظام إدارة الحزم RPM منذ عام 1999، جهود التطوير بالتعاون مع مشاركين من عدة توزيعات أخرى. وقد صدرت النسخة الخامسة من نظام إدارة الحزم RPM في مايو 2007.

تم استخدام هذا الإصدار من قبل توزيعات مثل Wind River Linux (حتى Wind River Linux 10) وRosa Linux و OpenMandriva Lx ( Mandriva Linux سابقًا والتي تحولت إلى rpm5 في عام 2011 [ 24 ] ) وأيضًا من قبل مشروع OpenPKG الذي يوفر حزمًا لمنصات UNIX الشائعة الأخرى.

لقد عاد OpenMandriva Lx إلى rpm.org [ 25 ] لإصدار 4.0.

عادت شركة OpenEmbedded ، وهي آخر مستخدم رئيسي لـ RPM5، إلى استخدام rpm.org بسبب مشاكل في RPM5. [ 26 ] [ 27 ]

انظر أيضاً

مراجع

  1. 1 2 "الجدول الزمني لـ RPM" . rpm.org . تم الاطلاع عليه بتاريخ 25 يونيو 2020 .
  2. سبيفاك، ماكس (14 ديسمبر 2006). "RPM - الخطط والأهداف وما إلى ذلك" . قائمة إعلانات فيدورا (قائمة بريدية). مؤرشف من الأصل في 6 أكتوبر 2012. تم الاطلاع عليه في 20 يناير 2011 .
  3. "الأسئلة الشائعة على موقع RPM.org" . rpm.org . مؤرشف من الأصل بتاريخ 5 نوفمبر 2016. تم الاطلاع عليه بتاريخ 25 أغسطس 2013 .
  4. "الإصدار 6.0.2" . 16 يوليو 2026. تم الاطلاع عليه في 17 يوليو 2026 .
  5. 1 2 بيلي 2000 ، الصفحات 22-25، الفصل 1: مقدمة في إدارة الحزم
  6. "po/LINGUAS" . GitHub . مؤرشف من الأصل في 23 أبريل 2022. تم الاطلاع عليه في 23 سبتمبر 2025 .
  7. 1 2 بيلي 2000 ، الصفحات 325-336، الملحق أ: تنسيق ملف RPM 
  8. مالايا، سانجاميش؛ ميشرا، نيتيش؛ راثي، سانكيت؛ أيابان (24 أكتوبر 2018). "تكوين YUM وإنشاء مستودعات محلية على IBM AIX" . developer.ibm.com . مؤرشف من الأصل في 3 أكتوبر 2020. تم الاطلاع عليه في 3 سبتمبر 2020 .
  9. وودي، أليكس (18 يوليو 2018). "يُعدّ كلٌّ من RPM وYum عنصرين هامين لنظام IBM i. إليكم السبب" . IT Jungle . مؤرشف من الأصل في 29 يونيو 2019. تم الاطلاع عليه في 3 سبتمبر 2020 .
  10. "مدير الحزم" . arcanoae.com . مؤرشف من الأصل بتاريخ 25 مارس 2016. تم الاطلاع عليه بتاريخ 4 سبتمبر 2020 .
  11. "أهداف تصميم إدارة دورة حياة المنتج" . docs.fedoraproject.org . مؤرشف من الأصل بتاريخ 21 مارس 2014. تم الاطلاع عليه بتاريخ 14 أبريل 2014 .
  12. "إعلان مزيف" . ibiblio.org . مؤرشف من الأصل في 4 نوفمبر 2013. تم الاطلاع عليه في 14 أبريل 2014 .
  13. zoujiaqing (29 يناير 2020). "دعم rpm4 لبناء حزم rpm بدون Berkeley DB (–disable-bdb)" . منتديات FreeBSD . مؤرشف من الأصل في 23 فبراير 2024. تم الاطلاع عليه في 18 سبتمبر 2023 .
  14. "RPM Fusion" . rpmfusion.org. مؤرشف من الأصل في 11 فبراير 2019. تم الاطلاع عليه في 22 نوفمبر 2010 .
  15. هارت، جون؛ داميليا، جيفري. تحليل انحراف التحقق من صحة RPM (ملف PDF) . وقائع مؤتمر LISA '02: المؤتمر السادس عشر لإدارة الأنظمة. بيركلي، كاليفورنيا: جمعية USENIX. الصفحات 155-166 . مؤرشف (ملف PDF) من الأصل في 28 يوليو 2011. تم الاطلاع عليه في 15 مارس 2011 . 
  16. "Zypper" . ويكي ميغو . مؤرشف من الأصل في 25 سبتمبر 2013. تم الاطلاع عليه في 14 أبريل 2014 .
  17. "الأسئلة الشائعة: حول المشاريع" . الموقع الرسمي لنظام Ark Linux. مؤرشف من الأصل بتاريخ 11 فبراير 2012. تم الاطلاع عليه بتاريخ 14 أبريل 2014 .
  18. "إصلاح قاعدة بيانات RPM بأمان" . oldrpm.org . مؤرشف من الأصل في 6 أغسطس 2019. تم الاطلاع عليه في 11 نوفمبر 2011 .
  19. "برامج التغليف التكميلية" . مشروع فيدورا. مؤرشف من الأصل في 10 مارس 2016. تم الاطلاع عليه في 11 نوفمبر 2011 .
  20. "تحويل حزم RPM إلى ضغط zstd" . مشروع فيدورا (ويكي). مؤرشف من الأصل في 2 يونيو 2019. تم الاطلاع عليه في 2 يونيو 2019 .
  21. " [ تحديث ] إضافة دعم لـ lzip" . rpm.org . مؤرشف من الأصل في 4 مارس 2016. تم الاطلاع عليه في 24 أكتوبر 2013 .
  22. سوتشي، ميروسلاف (10 ديسمبر 2014). "كيفية تغليف البرامج الاحتكارية" . مطورو ريد هات . مؤرشف من الأصل في 2 يوليو 2018. تم الاسترجاع في 2 يوليو 2018 .
  23. "ملاحظات إصدار Mageia 3: إدارة الحزم" . mageia.org . 19 مايو 2013. مؤرشف من الأصل في 7 فبراير 2014. تم الاطلاع عليه في 14 أبريل 2014 .
  24. بودنار، لاديسلاف وسميث، جيسي (22 نوفمبر 2010). "ديستروواتش ويكلي" . ديستروواتش . مؤرشف من الأصل في 23 يونيو 2018. تم الاسترجاع في 22 نوفمبر 2010. تتطلع ماندريفا إلى التخلي عن سلسلة RPM 4.x غير المُدعمة واستبدالها بـ RPM 5.x لتحسين إدارة الحزم.
  25. غايتش، توماش باويل. "المنتدى: التحول إلى RPMv4" . forum.openmandriva.org . مؤرشف من الأصل في 14 يناير 2022. تم الاطلاع عليه في 3 مارس 2018 .
  26. "YP Core – Pyro 2.3" . مشروع Yocto . 12 مايو 2017. مؤرشف من الأصل في 5 ديسمبر 2017. تم الاطلاع عليه في 4 ديسمبر 2017 .()
  27. كانافين، ألكسندر (14 فبراير 2017). " [ بنية Openembedded ] التغييرات التي سيُحدثها التبديل من smart إلى dnf" . قائمة بريدية لبنية Openembedded . مشروع Yocto . مؤرشف من الأصل في 5 نوفمبر 2018. تم الاطلاع عليه في 4 نوفمبر 2018 .
  • الموقع الرسميقم بتعديل هذا في ويكي بيانات
  • "مرجع أوامر RPM وDPKG" . packman.linux.is . مؤرشف من الأصل بتاريخ 28 أكتوبر 2016. تم الاطلاع عليه بتاريخ 23 سبتمبر 2025 .
  • فراي، مات (8 فبراير 2007). "قصة RPM" . مجلة ريد هات . تم الاطلاع عليه بتاريخ 23 سبتمبر 2025 .{{cite web}}: CS1 maint: deprecated archiveal service ( link )
  • "دليل التغليف" . docs.fedoraproject.org . تم الاطلاع عليه بتاريخ 23 سبتمبر 2025 .- كيفية إنشاء حزمة RPM
  • msamir. "RPM" . MSamir . مؤرشف من الأصل في 9 نوفمبر 2009. تم الاطلاع عليه في 23 سبتمبر 2025 .- دروس فيديو لبناء وتحديث حزم RPM
  • "ملاحظات حول إدارة دورات المحرك - بناء وحدات إدارة دورات المحرك بطريقة سهلة" . grahams.free-online.co.uk . تم الاطلاع عليه بتاريخ 23 سبتمبر 2025 .{{cite web}}: CS1 maint: deprecated archiveal service ( link )
  • بوارييه، دان (نوفمبر 2001). "تغليف البرامج باستخدام RPM، الجزء 1" . www-106.ibm.com . مؤرشف من الأصل في 7 فبراير 2002. تم الاطلاع عليه في 23 سبتمبر 2025 .
  • شيلدز، إيان (11 مايو 2010). "تعلم لينكس، 101: إدارة حزم RPM وYUM" . ibm.com . مؤرشف من الأصل في 16 مايو 2010. تم الاطلاع عليه في 23 سبتمبر 2025 .