CPAN

شبكة أرشيف بيرل الشاملة ( CPAN [ 1 ] : xvii ) هي مستودع برمجيات يضم أكثر من 220,000 وحدة برمجية ووثائق مصاحبة لها لـ 45,500 توزيعة، مكتوبة بلغة برمجة بيرل من قِبل أكثر من 14,500 مساهم. [ 2 ] يمكن أن يشير CPAN إما إلى شبكة الأرشيف أو إلى برنامج بيرل الذي يعمل كواجهة للشبكة وكأداة تثبيت برمجيات آلية (تشبه إلى حد ما مدير الحزم ). معظم البرامج الموجودة على CPAN مجانية ومفتوحة المصدر . [ 3 ]
تاريخ
تم إنشاء CPAN في عام 1993، وهو نشط على الإنترنت منذ أكتوبر 1995. [ 4 ] وهو يعتمد على نموذج CTAN ، وقد بدأ كمكان لتوحيد بنية أرشيفات بيرل المتناثرة. [ 5 ]
دور
مثل العديد من لغات البرمجة ، يمتلك بيرل آليات لاستخدام مكتبات خارجية ، مما يسمح باحتواء ملف واحد على إجراءات مشتركة تستخدمها عدة برامج. يُطلق بيرل على هذه المكتبات اسم "وحدات" . تُثبّت وحدات بيرل عادةً في أحد المجلدات التي تُحدد مساراتها في مُفسّر بيرل عند تجميعه لأول مرة ؛ في أنظمة التشغيل الشبيهة بنظام يونكس ، تشمل المسارات الشائعة /usr/lib/perl5 و /usr/local/lib/perl5 والعديد من مجلداتها الفرعية.
تأتي لغة بيرل مع مجموعة صغيرة من الوحدات الأساسية . بعض هذه الوحدات تؤدي مهام التمهيد، مثل ExtUtils::MakeMaker، [ 6 ] والتي تُستخدم لإنشاء ملفات Makefiles لبناء وتثبيت وحدات إضافية أخرى؛ بينما تُستخدم وحدات أخرى، مثل List::Util، [ 7 ] بشكل شائع فقط.
يتمثل الهدف الرئيسي لـ CPAN في مساعدة المبرمجين على تحديد مواقع الوحدات والبرامج غير المضمنة في توزيعة Perl القياسية. يتميز هيكله باللامركزية، حيث يتولى المؤلفون صيانة وحداتهم وتحسينها بأنفسهم. ومن الشائع إنشاء نسخ فرعية (Fork) ووحدات منافسة لنفس المهمة أو الغرض. يوجد نظام تتبع أخطاء تابع لجهة خارجية يتم إعداده تلقائيًا لأي توزيعة يتم تحميلها، ولكن يمكن للمؤلفين اختيار استخدام نظام تتبع أخطاء مختلف مثل GitHub . وبالمثل، على الرغم من أن GitHub موقع شائع لتخزين شفرة المصدر للتوزيعات، إلا أنه يمكن تخزينها في أي مكان يفضله المؤلف، أو قد لا تكون متاحة للعامة على الإطلاق. يمكن للمشرفين منح أذونات للآخرين لصيانة وحداتهم أو توليها، كما يمكن للمسؤولين منح أذونات لمن يرغبون في تولي الوحدات المهجورة. يتم الاحتفاظ بالإصدارات السابقة من التوزيعات المحدثة على CPAN حتى يقوم رافعها بحذفها، وتحتفظ شبكة مرآة ثانوية تسمى BackPAN بالتوزيعات حتى لو تم حذفها من CPAN. [ ٨ ] كما أن التاريخ الكامل لـ CPAN وجميع وحداته متاح كمشروع GitPAN، [ ٩ ] مما يتيح الاطلاع بسهولة على التاريخ الكامل لجميع الوحدات وصيانة النسخ المتفرعة بسهولة. يُستخدم CPAN أيضًا لتوزيع الإصدارات الجديدة من Perl، بالإضافة إلى المشاريع ذات الصلة، مثل Parrot و Raku .
بناء
تُعرف الملفات الموجودة على CPAN باسم التوزيعات . قد تتكون التوزيعة من وحدة نمطية واحدة أو أكثر، أو ملفات توثيق، أو برامج مُعبأة بتنسيق أرشفة شائع، مثل ملف tar مضغوط بصيغة gzip أو ملف ZIP . غالبًا ما تحتوي التوزيعات على نصوص تثبيت (تُسمى عادةً Makefile.PL أو Build.PL ) ونصوص اختبار يمكن تشغيلها للتحقق من سلامة عمل محتويات التوزيعة. تُرفع التوزيعات الجديدة إلى خادم رفع مؤلفي بيرل، أو PAUSE (انظر قسم رفع التوزيعات باستخدام PAUSE ).
في عام ٢٠٠٣، بدأت توزيعات البرامج بتضمين ملفات بيانات وصفية، تُسمى META.yml ، تُشير إلى اسم التوزيعة وإصدارها وتوابعها ومعلومات أخرى مفيدة؛ ومع ذلك، لا تحتوي جميع التوزيعات على بيانات وصفية. عندما لا تكون البيانات الوصفية موجودة في التوزيعة، سيحاول برنامج PAUSE تحليل الكود في التوزيعة للبحث عن نفس المعلومات؛ وهذه الطريقة ليست موثوقة بالضرورة. في عام ٢٠١٠، تم إنشاء الإصدار الثاني من هذه المواصفة [ ١٠ ] لاستخدامه عبر ملف جديد يُسمى META.json ، مع تضمين ملف بصيغة YAML في كثير من الأحيان لضمان التوافق مع الإصدارات السابقة .
مع وجود آلاف التوزيعات، يحتاج CPAN إلى هيكلة ليكون مفيدًا. غالبًا ما يضع المؤلفون وحداتهم في التسلسل الهرمي الطبيعي لأسماء وحدات Perl (مثل Apache::DBIأو Lingua::EN::Inflect) وفقًا للغرض أو المجال، على الرغم من أن هذا ليس إلزاميًا.
عادةً ما تحمل توزيعات وحدات CPAN أسماءً على شكل CGI-Application-3.1 (حيث يُستبدل الرمز :: في اسم الوحدة بشرطة، ويُضاف رقم الإصدار إلى الاسم)، ولكن هذا مجرد اصطلاح؛ إذ تخالف العديد من التوزيعات البارزة هذا الاصطلاح، لا سيما تلك التي تحتوي على وحدات متعددة. تمنع القيود الأمنية استبدال اسم ملف التوزيعة باسم مطابق، لذا فإن جميع أسماء التوزيعات تقريبًا تتضمن رقم الإصدار .
عناصر
تتألف البنية التحتية لتوزيع CPAN من شبكتها العالمية التي تضم أكثر من 250 خادمًا مرآة في أكثر من 60 دولة. [ 11 ] يستضيف كل خادم مرآة كامل حوالي 36 جيجابايت من البيانات. [ 12 ]
تُحدّث معظم الخوادم البديلة نفسها كل ساعة أو يوميًا أو كل يومين من الموقع الرئيسي لشبكة CPAN. [ 13 ] بعض هذه الخوادم عبارة عن خوادم FTP رئيسية تُوفّر نسخًا احتياطية للعديد من البرامج الأخرى، بينما بعضها الآخر مجرد خوادم مملوكة لشركات تستخدم لغة Perl بكثافة. يوجد خادمان بديلان على الأقل في كل قارة باستثناء القارة القطبية الجنوبية.
تم تطوير العديد من محركات البحث لمساعدة مبرمجي بيرل في البحث في CPAN. يتضمن محرك البحث الرسمي search.cpan.org البحث
مختبرو CPAN هم مجموعة من المتطوعين الذين يقومون بتنزيل واختبار التوزيعات فور تحميلها على CPAN. يُمكّن هذا المطورين من اختبار وحداتهم البرمجية على العديد من المنصات والبيئات التي لا يمكنهم الوصول إليها عادةً، مما يُحسّن قابلية النقل والجودة. يُرسل مختبرو التحقق الأولي تقارير تُجمع وتُستخدم في مواقع عرض متنوعة، بما في ذلك موقع التقارير الرئيسي، والإحصائيات، والتبعيات.
يمكن للمؤلفين تحميل توزيعات جديدة إلى CPAN من خلال خادم تحميل مؤلفي بيرل (PAUSE). وللقيام بذلك، يجب عليهم طلب حساب PAUSE.
بعد التسجيل، يمكنهم استخدام واجهة الويب على pause.perl.org ، أو واجهة FTP لتحميل الملفات إلى دليلهم وحذفها. تُفهرس الوحدات النمطية في التحميل على أنها أساسية فقط إذا لم يُستخدم اسم الوحدة النمطية من قبل (مما يمنح الأولوية للمُحمِّل)، أو إذا كان لدى المُحمِّل إذنٌ بهذا الاسم، وإذا كانت الوحدة النمطية إصدارًا أحدث من أي إدخال موجود. [ 16 ] يمكن تحديد ذلك من خلال واجهة الويب الخاصة بـ PAUSE.
CPAN.pm و CPANPLUS و cpanminus
يوجد أيضًا وحدة أساسية في لغة بيرل تُسمى CPAN، وعادةً ما يتم تمييزها عن المستودع نفسه باستخدام الاسم CPAN.pm. تُعد CPAN.pm في الأساس واجهة تفاعلية تُستخدم للبحث عن التوزيعات وتنزيلها وتثبيتها. كما تُوفر لغة بيرل الأساسية واجهة تفاعلية أخرى تُسمى cpan ، وهي الطريقة المعتادة لتشغيل CPAN.pm. بعد عملية تهيئة قصيرة واختيار المرآة، تستخدم هذه الواجهة الأدوات المتوفرة على جهاز المستخدم لتنزيل الوحدات وفك ضغطها وتجميعها واختبارها وتثبيتها تلقائيًا. كما يمكنها تحديث نفسها تلقائيًا.
أسفرت الجهود المبذولة لاستبدال CPAN.pm ببرنامج أكثر سلاسة وحداثة عن مجموعة وحدات CPANPLUS (أو CPAN++). يفصل CPANPLUS العمليات الخلفية لتنزيل الوحدات وتجميعها وتثبيتها عن واجهة سطر الأوامر التفاعلية المستخدمة لإصدار الأوامر. يدعم البرنامج العديد من الميزات المتقدمة، مثل التحقق من التوقيعات المشفرة، وعرض نتائج الاختبارات، وإلغاء تثبيت التوزيعة. أُضيف CPANPLUS إلى نواة لغة بيرل في الإصدار 5.10.0، ثم أُزيل منها في الإصدار 5.20.0.
تم تطوير بديل حديث أصغر حجمًا وأكثر كفاءة لبرامج تثبيت CPAN، يُسمى cpanminus. صُمم cpanminus ليستهلك ذاكرة أقل بكثير، وهو ما يُعد ضروريًا في بيئات الذاكرة المحدودة، وليكون قابلاً للاستخدام كبرنامج نصي مستقل، بحيث يمكنه تثبيت نفسه بنفسه، ولا يتطلب سوى توفر مجموعة وحدات Perl الأساسية. كما يتوفر أيضًا من CPAN كوحدة App::cpanminus، التي تُثبّت البرنامج النصي cpanm . لا يعتمد cpanminus على أي إعدادات دائمة، بل يتم تكوينه فقط من خلال بيئة التشغيل وخيارات سطر الأوامر. لا يحتوي cpanminus على واجهة سطر أوامر تفاعلية. وهو يدعم تنسيق cpanfile لتحديد المتطلبات الأساسية، وهو أمر مفيد في مشاريع Perl المؤقتة التي قد لا تكون مصممة للتثبيت عبر CPAN. كما يتميز cpanminus بقدرته على إلغاء تثبيت التوزيعات.
يمكن لكل وحدة من هذه الوحدات التحقق من تبعيات التوزيعة وتثبيت أي متطلبات مسبقة بشكل متكرر، إما تلقائيًا أو بموافقة المستخدم الفردية. تدعم كل وحدة بروتوكولي FTP وHTTP، ويمكنها العمل عبر جدران الحماية والخوادم الوكيلة.
تأثير
كثيرًا ما يُشير مبرمجو بيرل ذوو الخبرة إلى أن نصف قوة بيرل تكمن في CPAN، الذي يُعتبر التطبيق الأبرز في بيرل . [ 17 ] وهو يُعادل تقريبًا Composer للغة PHP ، ومستودع PyPI (فهرس حزم بايثون) للغة بايثون ، و RubyGems للغة روبي ، و CRAN للغة R ، و npm للغة Node.js ، و LuaRocks للغة لوا ، و Maven للغة جافا ، و Hackage للغة هاسكل . يتميز CPAN باستخدامه لمساحات أسماء مُدارة، ونظام اختبار مُحكم، وأسلوب توثيق مُحدد بدقة، مما يجعله فريدًا من نوعه.
نظراً لأهميته لمجتمع مطوري بيرل، فإن CPAN يُشكّل ثقافة بيرل ويتأثر بها في الوقت نفسه. وكثيراً ما يشارك "أمين مكتبته الرئيسي المُعيّن ذاتياً"، جاركو هيتانييمي ، في مزحات كذبة أبريل ؛ ففي 1 أبريل 2002، سُمّي الموقع مؤقتاً CJAN ، حيث يرمز الحرف "J" إلى "جافا". وفي عام 2003، www.cpan.orgأُعيد توجيه اسم النطاق إلى Matt's Script Archive ، وهو موقع سيئ السمعة في مجتمع بيرل بسبب رداءة كتابة أكواده. [ 18 ] [ 19 ] [ 20 ]
تُوزَّع بعض التوزيعات على CPAN على سبيل المزاح. Acme::يُخصَّص هذا التسلسل الهرمي لوحدات المزاح؛ فعلى سبيل المثال، Acme::Don'tيُضيف don'tدالةً لا تُشغِّل الكود المُعطى لها (لتكملة الدالة doالمُدمجة التي تُشغِّله). حتى خارج هذا Acme::التسلسل الهرمي، لا تزال بعض الوحدات تُكتب في الغالب للتسلية؛ ومن الأمثلة على ذلك وحدة `Perl` Lingua::Romana::Perligata، التي يُمكن استخدامها لكتابة برامج Perl باستخدام مجموعة فرعية من لغة اللاتينية.
في عام ٢٠٠٥، اجتمعت مجموعة من مطوري لغة بيرل المهتمين أيضًا بلغة جافا سكريبت لإنشاء JSAN ، وهي شبكة أرشيف جافا سكريبت. تُعدّ JSAN نسخةً شبه مباشرة من بنية CPAN التحتية لاستخدامها مع لغة جافا سكريبت، التي لم يكن لها مجتمع متماسك طوال معظم فترة وجودها.
في عام ٢٠٠٨، وبعد لقاءٍ عابر مع آدم كينيدي، مدير شبكة CPAN ، في مؤتمر مطوري البرمجيات مفتوحة المصدر، أنشأ راستي راسل، مطور نواة لينكس ، شبكة CCAN، وهي شبكة أرشيف لغة C الشاملة. تُعدّ CCAN نسخةً مُعدّلةً مباشرةً من بنية CPAN لاستخدامها مع لغة C.
CRAN، وهي شبكة أرشيف R الشاملة، عبارة عن مجموعة من الخوادم التي تستضيف توزيعات لغة R والوثائق والإضافات المساهمة. [ 21 ]
انظر أيضاً
- CTAN — موقع يستضيف مواد TeX
- قائمة برامج وأدوات بيرل
مراجع
- ↑ وول، لاري؛ شوارتز، راندال؛ كريستيانسن، توم (1996). برمجة بيرل . أورايلي. ISBN 978-1-5659-2149-8تم الاطلاع عليه بتاريخ 21 ديسمبر 2025 .
- ↑ "الصفحة الأولى لـ CPAN" . تم الاطلاع عليها في 2 فبراير 2025 .
- ↑ "كيف يتم ترخيص لغة بيرل ووحدات CPAN؟" معظم
وحدات CPAN، وإن لم تكن جميعها، مرخصة بموجب رخصة جنو العمومية (GPL) أو رخصة Artistic...
- ↑ "الجدول الزمني للغة بيرل وثقافتها" .
- ↑ "فهم CPAN" (ملف PDF) .
أقترح أن نتعاون لإنشاء بنية موحدة، على غرار مشروع CTAN الذي نجح في إنشاء مجموعة من المواقع المرجعية لـ TeX.
- ↑ "ExtUtils::MakeMaker - إنشاء ملف Makefile للوحدة - متصفح Perldoc" . perldoc.perl.org . تم الاطلاع عليه بتاريخ 18 نوفمبر 2020 .
- ↑ "List::Util - مجموعة مختارة من الإجراءات الفرعية العامة للقوائم - متصفح Perldoc" . perldoc.perl.org . تم الاطلاع عليه بتاريخ 18 نوفمبر 2020 .
- ↑ "BackPAN" . تم الاطلاع عليه بتاريخ 20 ديسمبر 2019 .
- ↑ "ما هو Gitpan؟" . GitHub . 2 ديسمبر 2015. تم الاطلاع عليه في 16 نوفمبر 2016 .
- ↑ "CPAN::Meta::History" . MetaCPAN . تم الاطلاع عليه بتاريخ 20 ديسمبر 2019 .
- ↑ "شبكة مرآة CPAN" . تم الاطلاع عليه بتاريخ 16 نوفمبر 2016 .
- ↑ "كيفية نسخ CPAN" . CPAN.org . تم الاطلاع عليه بتاريخ 22 أغسطس 2024 .
- ↑ "حالة وإحصائيات CPAN" . تم الاطلاع عليه بتاريخ 9 مايو 2010 .
- ↑ "نهاية حقبة: وداعًا لموقع search.cpan.org" . log.perl.org . تم الاطلاع عليه بتاريخ 22 مايو 2018 .
- ↑ "وداعًا لموقع search.cpan.org" . perl.com . تم الاطلاع عليه بتاريخ 26 يونيو 2018 .
- ↑ "نموذج تشغيل PAUSE" . GitHub . تم الاطلاع عليه بتاريخ 20 ديسمبر 2019 .
- ↑ "ردًا على: تطبيقات رائدة في لغة بيرل" . تم الاطلاع عليه بتاريخ 24 فبراير 2013 .
- ↑ "عناصر البرمجة باستخدام بيرل" . 12 أكتوبر 2000. تم الاطلاع عليه بتاريخ 25 أبريل 2013 .
- ↑ "استغل هذا النموذج formmail.pl للمتعة، وللمتعة فقط" . 7 أغسطس 2001. تم الاطلاع عليه في 25 أبريل 2013 .
- ↑ "أرشيف مات للنصوص يضرب من جديد!" . 4 يوليو 2001. تم الاطلاع عليه في 25 أبريل 2013 .
- ↑ "ما هو CRAN؟" . تم الاطلاع عليه بتاريخ 20 ديسمبر 2019 .
روابط خارجية
- الموقع الرسمي

- ميتا سي بان
- قائمة الخوادم الافتراضية الرسمية لشبكة CPAN ، وحالة هذه الخوادم.
- ZCAN - "فن شبكات الأرشيف الشاملة" - وثيقة تهدف إلى شرح كيف ولماذا نجحت CPAN وكيفية تكرارها في جهود مماثلة. (9 يناير 2003 بقلم جاركو هيتانييمي ).
- بيرل
- شبكات مدفوع
- أنظمة إدارة الطرود المجانية
- أنظمة إدارة الحزم
