مستودع البرامج
مستودع البرامج ، أو "مستودع" اختصارًا، هو موقع تخزين لحزم البرامج . غالبًا ما يُخزَّن فيه أيضًا جدول المحتويات، بالإضافة إلى البيانات الوصفية. يُدار مستودع البرامج عادةً بواسطة نظام التحكم في المصدر أو نظام التحكم في الإصدار ، أو ما يُعرف بمديري المستودعات. تتيح مديري الحزم تثبيت وتحديث المستودعات تلقائيًا، والتي تُسمى أحيانًا "حزمًا".
ملخص
يُدير العديد من ناشري البرامج والمنظمات الأخرى خوادم على الإنترنت لهذا الغرض، إما مجانًا أو مقابل رسوم اشتراك. قد تكون المستودعات مخصصة لبرامج معينة فقط، مثل CPAN للغة البرمجة بيرل ، أو لنظام تشغيل كامل . عادةً ما يُوفر مُشغّلو هذه المستودعات نظام إدارة حزم ، وهو عبارة عن أدوات مُصممة للبحث عن حزم البرامج من المستودعات وتثبيتها والتعامل معها. على سبيل المثال، تستخدم العديد من توزيعات لينكس أداة التغليف المتقدمة (APT)، الشائعة في التوزيعات المبنية على دبيان ، أو أداة تحديث Yellowdog المُعدّلة ( yum ) الموجودة في التوزيعات المبنية على ريد هات . كما توجد أيضًا أنظمة إدارة حزم مستقلة متعددة، مثل pacman المُستخدم في Arch Linux وequo الموجود في Sabayon Linux .

بما أن مستودعات البرامج مصممة لتضمين حزم برمجية مفيدة، فإن المستودعات الرئيسية مصممة لتكون خالية من البرامج الضارة . إذا تم تكوين جهاز كمبيوتر لاستخدام مستودع موقّع رقميًا من مورد موثوق، ومقترنًا بنظام أذونات مناسب ، فإن ذلك يقلل بشكل كبير من خطر البرامج الضارة على هذه الأنظمة. ونتيجة لذلك، فإن العديد من الأنظمة التي تتمتع بهذه الإمكانيات لا تحتاج إلى برامج مكافحة البرامج الضارة مثل برامج مكافحة الفيروسات . [ 1 ]
تحتوي معظم توزيعات لينكس الرئيسية على العديد من المستودعات حول العالم التي تعكس المستودع الرئيسي.
من جانب العميل، يساعد مدير الحزم في التثبيت من المستودعات وتحديثها.
نظام إدارة الحزم مقابل عملية تطوير الحزم
يختلف نظام إدارة الحزم عن عملية تطوير الحزم .
يُستخدم نظام إدارة الحزم عادةً لتسهيل دمج التعليمات البرمجية من مصادر مختلفة في وحدة تشغيل مستقلة ومتكاملة. وبالتالي، يمكن استخدام نظام إدارة الحزم لإنتاج توزيعة لينكس ، وربما توزيعة مُخصصة لتطبيق مُحدد ذي نطاق محدود.
على النقيض من ذلك، تُستخدم عملية تطوير الحزم لإدارة التطوير المشترك للبرمجيات وتوثيق مجموعة من الدوال أو الإجراءات ذات موضوع مشترك، مما ينتج عنه حزمة من وظائف البرمجيات التي عادةً ما تكون غير مكتملة وغير قابلة للاستخدام بشكل مستقل. وتساعد عملية تطوير الحزم الجيدة المستخدمين على الالتزام بممارسات التوثيق والبرمجة الجيدة، مع دمج مستوى معين من اختبارات الوحدات .
المستودعات المختارة
يسرد الجدول التالي بعض اللغات التي تحتوي على مستودعات للبرامج المساهمة. ويصف عمود "الفحوصات التلقائية" الفحوصات الروتينية التي يتم إجراؤها.
قلة قليلة من المطورين يملكون القدرة على اختبار برامجهم على أنظمة تشغيل متعددة باستخدام إصدارات مختلفة من الكود الأساسي وحزم برمجية أخرى قد يستخدمونها. أما بالنسبة للغة البرمجة R ، فإن شبكة أرشيف R الشاملة (CRAN) تُجري اختبارات دورية.
لفهم أهمية ذلك، تخيل موقفًا مع مطورين، سالي وجون. تُساهم سالي بحزمة برمجية (أ). تُشغّل سالي الإصدار الحالي من البرنامج على إصدار واحد فقط من نظام التشغيل مايكروسوفت ويندوز، وقد اختبرت البرنامج في تلك البيئة فقط. على فترات منتظمة تقريبًا، يختبر CRAN مساهمة سالي على عشرات التوليفات من أنظمة التشغيل وإصدارات برنامج لغة R الأساسية. إذا تسبب أحدها في حدوث خطأ، تتلقى سالي رسالة الخطأ. لحسن الحظ، قد تُوفر تفاصيل رسالة الخطأ معلومات كافية لتمكينها من إصلاح الخطأ، حتى لو لم تتمكن من إعادة إنتاجه باستخدام أجهزتها وبرامجها الحالية. بعد ذلك، لنفترض أن جون يُساهم في المستودع بحزمة برمجية (ب) تستخدم الحزمة (أ). تجتاز الحزمة (ب) جميع الاختبارات وتُتاح للمستخدمين. لاحقًا، تُرسل سالي نسخة مُحسّنة من (أ)، مما يُسبب خللًا في (ب). تُتيح عمليات الفحص التلقائي تزويد جون بالمعلومات اللازمة لإصلاح المشكلة.
يكشف هذا المثال عن نقطة قوة ونقطة ضعف في نظام الحزم المساهمة في لغة R: يدعم CRAN هذا النوع من الاختبار الآلي للحزم المساهمة، ولكن لا يُشترط على الحزم المساهمة في CRAN تحديد إصدارات الحزم المساهمة الأخرى التي تستخدمها. توجد إجراءات لطلب إصدارات محددة من الحزم، ولكن قد لا يستخدمها المساهمون.
إضافةً إلى ذلك، يوفر مستودع مثل CRAN، الذي يُجري فحوصات دورية للحزم المُساهم بها، مجموعة اختبارات شاملة، وإن كانت مؤقتة، لإصدارات التطوير للغة الأساسية. فإذا تلقت سالي (في المثال أعلاه) رسالة خطأ غير مفهومة أو غير مناسبة، خاصةً من إصدار تطوير للغة، فيمكنها (وكثيراً ما تفعل ذلك مع لغة R) طلب المساعدة من فريق تطوير اللغة الأساسي. وبهذه الطريقة، يُسهم المستودع في تحسين جودة برمجيات اللغة الأساسية.
| اللغة ، الغرض | عملية تطوير الحزمة | مستودع | طرق التثبيت | منصة التطوير التعاوني | الفحص التلقائي |
|---|---|---|---|---|---|
| لغة C / لغة C++ | vcpkg | ||||
| كونان | |||||
| لغة الشفرة الشائعة | Quicklisp [ 2 ] | ||||
| د | داب | dlang.org | dub add <package> | ||
| دارت | رفرفة | pub.dev | flutter pub get <package> | ||
| فورتران | مدير حزم فورتران (fpm) | ||||
| يذهب | يذهب | pkg.go.dev | احصل على <الحزمة> | جيت هاب [ 3 ] | |
| هاسكل | بنية مشتركة لتطبيقات البناء والمكتبات [ 4 ] | اختراق | كابال (برمجيات) | ||
| جافا ، كوتلين ، سكالا ، جروفي ، كلوجر ، إلخ. | مافن [ 5 ] | مافن، أباتشي آيفي ، غرادل ، إس بي تي | |||
| جافا سكريبت ، تايب سكريبت ، نود.جي إس | العقدة | سجل npm [ 6 ] | npm install <package> yarn add <package> | ||
| باور | تثبيت حزمة Bower | ||||
| جوليا [ 7 ] | |||||
| .شبكة | نوجيت | NuGet [ 8 ] | dotnet add package <package> | ||
| أوكاميل | OPAM | ||||
| بيرل | CPAN | جزء في المليون [ 9 ] | الحالة النشطة | ||
| PHP | بير ، ملحن | شركة بي إي سي إل ، شركة تغليف | composer require <package> pear install <package> | ||
| باور شيل | معرض باور شيل | PSResourceGet | |||
| بايثون | Setuptools ، Poetry [ 10 ] | PyPI | pip ، EasyInstall ، PyPM، Poetry، uv | ||
| كوندا | |||||
| R | عملية فحص أوامر R [ 11 ] [ 12 ] | CRAN [ 13 ] | تثبيت الحزم [ 14 ] عن بعد [ 15 ] | جيت هاب [ 3 ] | غالباً على 12 منصة أو مجموعات من إصدارات مختلفة من R (devel، prerel، patched، release) على أنظمة تشغيل مختلفة (إصدارات مختلفة من Linux وWindows وmacOS وSolaris). |
| روبي | روبي جيمز | RubyGems [ 16 ] | RubyGems، [ 16 ] Bundler [ 17 ] | ||
| الصدأ | الشحنة [ 18 ] | crates.io [ 19 ] | الشحنة [ 18 ] | ||
| سويفت | مدير حزم سويفت | ||||
| TeX ، LaTeX | CTAN |
(تم نسخ أجزاء من هذا الجدول من "قائمة أفضل المستودعات حسب لغة البرمجة" على موقع Stack Overflow [ 20 ] )
تشمل المستودعات البارزة ذات النطاق المحدود ما يلي:
مديري الحزم
تساعد برامج إدارة الحزم في إدارة المستودعات وتوزيعها. عند تحديث مستودع ما، يتيح برنامج إدارة الحزم عادةً للمستخدم تحديث ذلك المستودع من خلاله. كما يساعد في إدارة أمور أخرى مثل التبعيات بين المستودعات المختلفة. ومن أمثلة برامج إدارة الحزم:
| مدير الحزم | وصف |
|---|---|
| npm | مدير Node.js [ 21 ] |
| نقطة | برنامج تثبيت بايثون [ 22 ] |
| شقة | مدير دبيان [ 23 ] |
| مشروبات منزلية الصنع | برنامج تثبيت لنظام macOS ، يسمح بتثبيت الحزم التي لم تقم Apple بتثبيتها [ 24 ] |
| vcpkg | مدير للغة C و C++ [ 25 ] [ 26 ] |
| لذيذ و DNF | مدير لـ Fedora ، Red Hat Enterprise Linux [ 27 ] |
| باكمان | مدير نظام التشغيل Arch Linux [ 28 ] |
| الملحن | مدير لغة PHP |
مديرو المستودعات
في بيئة المؤسسات، يُستخدم مستودع البرامج عادةً لتخزين الملفات البرمجية، أو لنسخ المستودعات الخارجية التي قد يتعذر الوصول إليها بسبب قيود أمنية. توفر هذه المستودعات وظائف إضافية، مثل التحكم في الوصول، والتحكم في الإصدارات، والتحقق الأمني من البرامج المرفوعة، ووظائف التجميع، وما إلى ذلك. كما تدعم عادةً مجموعة متنوعة من التنسيقات في حزمة واحدة، لتلبية جميع احتياجات المؤسسة، وبالتالي توفير مصدر موثوق واحد للبيانات. ومن الأمثلة على ذلك مستودع Sonatype Nexus . [ 29 ]
على جانب الخادم، تتم إدارة مستودع البرامج عادةً بواسطة نظام التحكم في المصادر أو مديري المستودعات. تتيح بعض مديري المستودعات تجميع مواقع المستودعات الأخرى في عنوان URL واحد، كما توفر خادمًا وسيطًا للتخزين المؤقت. عند إجراء عمليات البناء المستمرة، يتم إنتاج العديد من الملفات، وغالبًا ما تُخزن مركزيًا، لذا يُعد حذف الملفات غير المُصدرة تلقائيًا أمرًا بالغ الأهمية.
العلاقة بالتكامل المستمر
كجزء من دورة حياة التطوير، يتم باستمرار تحويل شفرة المصدر إلى ملفات ثنائية باستخدام التكامل المستمر . وقد يتفاعل هذا مع مدير مستودع الملفات الثنائية تمامًا كما يفعل المطور، حيث يحصل على الملفات من المستودعات ويرفع الإصدارات إليها. يتيح التكامل الوثيق مع خوادم التكامل المستمر تخزين البيانات الوصفية المهمة، مثل:
- أي مستخدم قام بتشغيل عملية البناء (سواء يدويًا أو عن طريق الالتزام بنظام التحكم في المراجعة)
- ما هي الوحدات التي تم بناؤها؟
- ما هي المصادر المستخدمة (معرف الالتزام، المراجعة، الفرع)
- التبعيات المستخدمة
- متغيرات البيئة
- تم تثبيت الحزم
القطع الأثرية والطرود
تختلف دلالات المُخرجات والحزم بطبيعتها. فالمُخرجات هي ببساطة مُخرجات أو مجموعة من الملفات (مثل JAR، WAR، DLL، RPM، إلخ)، وقد يحتوي أحد هذه الملفات على بيانات وصفية (مثل ملف POM). أما الحزم فهي ملف أرشيف واحد بتنسيق مُحدد (مثل NuGet ) يحتوي على ملفات مُناسبة لنوع الحزمة (مثل DLL، PDB). [ 30 ] ينتج العديد من المُخرجات عن عمليات البناء، ولكن هناك أنواع أخرى بالغة الأهمية أيضًا. وتنقسم الحزم أساسًا إلى نوعين: مكتبة أو تطبيق. [ 31 ]
بالمقارنة مع ملفات المصدر، فإن القطع الأثرية الثنائية غالبًا ما تكون أكبر بكثير، ونادرًا ما يتم حذفها أو الكتابة فوقها (باستثناء حالات نادرة مثل اللقطات أو الإصدارات الليلية)، وعادة ما تكون مصحوبة بالكثير من البيانات الوصفية مثل المعرف واسم الحزمة والإصدار والترخيص والمزيد.
البيانات الوصفية
تصف البيانات الوصفية عنصرًا ثنائيًا، وتُخزَّن وتُحدَّد بشكل منفصل عن العنصر نفسه، ويمكن أن يكون لها استخدامات إضافية متعددة. يوضح الجدول التالي بعض أنواع البيانات الوصفية الشائعة واستخداماتها:
| نوع البيانات الوصفية | يستخدم لـ |
|---|---|
| الإصدارات المتاحة | الترقية والتخفيض التلقائي |
| التبعيات | حدد العناصر الأخرى التي يعتمد عليها العنصر الحالي |
| التبعيات النهائية | حدد العناصر الأخرى التي تعتمد على العنصر الحالي |
| رخصة | الامتثال القانوني |
| تاريخ ووقت البناء | إمكانية التتبع |
| الوثائق | توفير إمكانية الوصول دون اتصال بالإنترنت للوثائق السياقية في بيئات التطوير المتكاملة |
| معلومات الموافقة | إمكانية التتبع |
| المقاييس | تغطية الكود، والامتثال للقواعد، ونتائج الاختبار |
| البيانات الوصفية التي أنشأها المستخدم | التقارير والعمليات المخصصة |
انظر أيضاً
مراجع
- ↑ itmWEB: التعامل مع فيروسات الحاسوب (مؤرشف بتاريخ 14 أكتوبر 2007، في أرشيف الإنترنت)
- ↑ "Quicklisp beta" . www.quicklisp.org . مؤرشف من الأصل بتاريخ 23-03-2019 . تم الاطلاع عليه بتاريخ 25-03-2019 .
- 1 2 ديكان، ألكسندر؛ مينز، توم؛ كلايس، مايليك؛ غروسجان، فيليب (2015). "حول تطوير وتوزيع حزم R: تحليل تجريبي لنظام R البيئي" . وقائع ورش عمل المؤتمر الأوروبي لعام 2015 حول هندسة البرمجيات . الصفحات 1-6 . doi : 10.1145/2797433.2797476 . ISBN 9781450333931S2CID 1680582. مؤرشف من الأصل بتاريخ 18 يناير 2023. تم الاطلاع عليه بتاريخ 26 أكتوبر 2021 .
- ↑ "جماعة هاسكل السرية | نظرة عامة" . www.haskell.org . مؤرشف من الأصل بتاريخ 10 أبريل 2019. تم الاطلاع عليه بتاريخ 25 مارس 2019 .
- ↑ "Maven – مرحبًا بك في Apache Maven" . maven.apache.org . مؤرشف من الأصل بتاريخ 24-07-2011 . تم الاطلاع عليه بتاريخ 25-03-2019 .
- ↑ "npm" . www.npmjs.com . مؤرشف من الأصل بتاريخ 13 أبريل 2018. تم الاطلاع عليه بتاريخ 25 مارس 2019 .
- ↑ "قائمة حزم جوليا" . pkg.julialang.org . مؤرشف من الأصل بتاريخ 20 يناير 2019. تم الاطلاع عليه بتاريخ 25 مارس 2019 .
- ↑ karann-msft. "مرجع واجهة مستخدم مدير حزم NuGet" . docs.microsoft.com . مؤرشف من الأصل بتاريخ 25-03-2019 . تم الاطلاع عليه بتاريخ 25-03-2019 .
- ↑ "تثبيت وحدات بيرل - www.cpan.org" . www.cpan.org . مؤرشف من الأصل بتاريخ 14 مارس 2019. تم الاطلاع عليه بتاريخ 25 مارس 2019 .
- ↑ "الشعر" . python-poetry.org . مؤرشف من الأصل بتاريخ 22-05-2024 . تم الاطلاع عليه بتاريخ 22-05-2024 .
- ↑ لييش، فريدريش. "إنشاء حزم R: دليل تعليمي" (ملف PDF) . مؤرشف (PDF) من الأصل بتاريخ 2017-12-09 . تم الاطلاع عليه بتاريخ 2016-07-19 .
- ↑ غريفز، سبنسر ب.؛ دوراي-راج، سوندار. "إنشاء حزم R، باستخدام CRAN وR-Forge وشبكات أرشفة R المحلية ومستودعات Subversion (SVN)" (ملف PDF) . مؤرشف (PDF) من الأصل بتاريخ 2017-07-05 . تم الاطلاع عليه بتاريخ 2016-07-19 .
- ↑ "شبكة أرشيف R الشاملة" . cran.r-project.org . مؤرشف من الأصل بتاريخ 23 يناير 2019. تم الاطلاع عليه بتاريخ 25 مارس 2019 .
- ↑ "تثبيت وإدارة R" . cran.r-project.org . مؤرشف من الأصل بتاريخ 23-11-2015 . تم الاطلاع عليه بتاريخ 25-03-2019 .
- ↑ ويكهام، هادلي؛ برايان، جيني. "بنية الحزمة وحالتها" . حزم R. أورايلي. مؤرشف من الأصل في 9 نوفمبر 2020. تم الاسترجاع في 20 نوفمبر 2020 .
- 1 2 "RubyGems.org، مُضيف جواهر مجتمعك" . rubygems . مؤرشف من الأصل بتاريخ 13 فبراير 2019. تم الاطلاع عليه بتاريخ 3 فبراير 2022 .
- ↑ "Bundler: أفضل طريقة لإدارة مكتبات Ruby البرمجية" . bundler.io . مؤرشف من الأصل بتاريخ 29 يناير 2022. تم الاطلاع عليه بتاريخ 3 فبراير 2022 .
- ١ ٢ "كتاب الشحن" . وثائق. لغة برمجة رست . مؤرشف من الأصل بتاريخ ٢٠١٩-٠٤-٢٨ . تم الاطلاع عليه بتاريخ ٢٠١٩-٠٨-٢٦ .
- ↑ "سجل حزم Rust" . crates.io . مؤرشف من الأصل بتاريخ 28-08-2019 . تم الاطلاع عليه بتاريخ 26-08-2019 .
- ↑ "قائمة بأفضل المستودعات حسب لغة البرمجة" . ستاك أوفرفلو . مؤرشف من الأصل بتاريخ 26-12-2018 . تم الاطلاع عليه بتاريخ 14-04-2010 .
- ↑ "نبذة عن npm" . www.npmjs.com . مؤرشف من الأصل بتاريخ 19-11-2019 . تم الاطلاع عليه بتاريخ 21-11-2019 .
- ↑ للمطورين، أداة pip، pip: الأداة الموصى بها من PyPA لتثبيت حزم بايثون. ، مؤرشفة من الأصل بتاريخ 14 يوليو 2020 ، تم الاطلاع عليها بتاريخ 21 نوفمبر 2019
- ↑ "Apt - Debian Wiki" . wiki.debian.org . مؤرشف من الأصل بتاريخ 19-10-2019 . تم الاطلاع عليه بتاريخ 22-11-2019 .
- ↑ "Homebrew" . Homebrew . مؤرشف من الأصل بتاريخ 2022-10-05 . تم الاسترجاع بتاريخ 2019-11-22 .
- ↑ "أطلقت Yelp خدمة Yelp Fusion، وأصدرت مايكروسوفت أداة Vcpkg، بالإضافة إلى حزمة تطوير البرامج Touch Sense الجديدة لمطوري تطبيقات أندرويد" . SD Times . 20 سبتمبر 2016. مؤرشف من الأصل في 27 نوفمبر 2020. تم الاطلاع عليه في 19 نوفمبر 2020 .
- ↑ «مدير مكتبة C++ من مايكروسوفت متوفر الآن لأنظمة لينكس وماك أو إس» . صحيفة إس دي تايمز . ٢٥ أبريل ٢٠١٨. مؤرشف من الأصل في ٢٢ سبتمبر ٢٠٢٠. تم الاطلاع عليه في ١٩ نوفمبر ٢٠٢٠ .
- ↑ تشينثاغونتلا، كيرثي (22 أبريل 2020). "إدارة حزم لينكس باستخدام YUM وRPM" . Enable Sysadmin . مؤرشف من الأصل بتاريخ 11 أبريل 2021. تم الاطلاع عليه بتاريخ 11 أبريل 2021 .
- ↑ "pacman - ArchWiki" . wiki.archlinux.org . مؤرشف من الأصل بتاريخ 18-08-2017 . تم الاطلاع عليه بتاريخ 11-04-2021 .
- ↑ "مستودع نيكسوس | إدارة مكونات البرمجيات" . مؤرشف من الأصل بتاريخ 25-04-2021 . تم الاطلاع عليه بتاريخ 25-04-2021 .
- ↑ "مخططات تصنيف مستودعات لينكس" . braintickle.blogspot.com. ١٣ يناير ٢٠٠٦. مؤرشف من الأصل في ١١ أكتوبر ٢٠٠٧. تم الاطلاع عليه في ١ مارس ٢٠٠٨ .
- توزيع البرمجيات
