CPAN

از ویکیپدیا، دانشنامه آزاد
پرش به ناوبری پرش به جستجو
لوگوی CPAN

شبکه جامع آرشیو پرل ( CPAN ) مخزنی از بیش از 250000 ماژول نرم افزاری و مستندات همراه برای 39000 توزیع است که توسط بیش از 12000 مشارکت کننده به زبان برنامه نویسی Perl نوشته شده است. [1] CPAN می تواند شبکه بایگانی یا برنامه Perl را نشان دهد که به عنوان یک رابط برای شبکه و به عنوان یک نصب کننده نرم افزار خودکار عمل می کند (تا حدودی مانند یک مدیر بسته ). اکثر نرم افزارهای موجود در CPAN نرم افزار رایگان و متن باز هستند . [2]

تاریخچه

CPAN در سال 1993 شکل گرفت و از اکتبر 1995 به صورت آنلاین فعال بوده است. [3] این بر اساس مدل CTAN است و به عنوان مکانی برای متحد کردن ساختار آرشیوهای پراکنده پرل آغاز شد. [4]

نقش

مانند بسیاری از زبان‌های برنامه‌نویسی ، پرل مکانیسم‌هایی برای استفاده از کتابخانه‌های خارجی کد دارد، که باعث می‌شود یک فایل حاوی روال‌های معمولی باشد که توسط چندین برنامه استفاده می‌شود. پرل این ماژول ها را می نامد . ماژول‌های پرل معمولاً در یکی از چندین دایرکتوری نصب می‌شوند که مسیرهای آن در مفسر پرل در اولین بار کامپایل قرار می‌گیرد . در شبه یونیکس سیستم عامل ، مسیرهای رایج عبارتند از / usr / معاونت / perl5 ، / usr / محلی / معاونت / perl5 ، و چند تن از زیرشاخه های خود را.

پرل با مجموعه کوچکی از ماژول های اصلی عرضه می شود . برخی از اینها وظایف بوت استرپ را انجام می دهند، مانند ExtUtils::MakeMaker، [5] که برای ایجاد Makefiles برای ساخت و نصب ماژول های افزونه دیگر استفاده می شود. دیگران، مانند List::Util، [6] صرفاً معمولاً استفاده می شوند.

هدف اصلی CPAN کمک به برنامه نویسان برای یافتن ماژول ها و برنامه هایی است که در توزیع استاندارد پرل گنجانده نشده اند. ساختار آن غیرمتمرکز است. نویسندگان ماژول های خود را حفظ و بهبود می بخشند. فورک کردن، و ایجاد ماژول های رقیب برای همان کار یا هدف، رایج است. یک سیستم ردیابی اشکال شخص ثالث وجود دارد که به طور خودکار برای هر توزیع آپلود شده تنظیم می شود، اما نویسندگان ممکن است از سیستم ردیابی اشکال دیگری مانند GitHub استفاده کنند.. به طور مشابه، اگرچه GitHub یک مکان محبوب برای ذخیره منبع برای توزیع است، اما ممکن است در هر جایی که نویسنده ترجیح می دهد ذخیره شود یا اصلاً در دسترس عموم نباشد. نگهدارنده‌ها می‌توانند مجوزهایی را برای نگهداری یا تصاحب ماژول‌هایشان به دیگران بدهند، و ممکن است برای کسانی که مایل به تصاحب ماژول‌های متروکه هستند، مجوزها توسط مدیران اعطا شود. نسخه‌های قبلی توزیع‌های به‌روزرسانی شده تا زمانی که آپلودکننده آن را حذف کند، در CPAN حفظ می‌شوند و یک شبکه آینه‌ای ثانویه به نام BackPAN، توزیع‌ها را حتی اگر از CPAN حذف شوند، حفظ می‌کند. [7] همچنین، تاریخچه کامل CPAN و همه ماژول های آن به عنوان پروژه GitPAN در دسترس است، [8]امکان مشاهده آسان تاریخچه کامل برای همه ماژول ها و برای نگهداری آسان چنگال ها. CPAN همچنین برای توزیع نسخه های جدید Perl و همچنین پروژه های مرتبط مانند Parrot و Raku استفاده می شود .

ساختار

فایل های موجود در CPAN به عنوان توزیع نامیده می شوند . یک توزیع ممکن است از یک یا چند ماژول، فایل مستندات، یا برنامه‌های بسته‌بندی شده در قالب آرشیو رایج، مانند یک بایگانی تار gzipped یا یک فایل ZIP تشکیل شده باشد. توزیع‌ها اغلب حاوی اسکریپت‌های نصب (معمولا Makefile.PL یا Build.PL نامیده می‌شوند ) و اسکریپت‌های آزمایشی هستند که می‌توانند برای تأیید صحت عملکرد محتویات توزیع اجرا شوند. توزیع‌های جدید در سرور آپلود نویسندگان Perl یا PAUSE آپلود می‌شوند (به بخش آپلود توزیع‌ها با مکث مراجعه کنید ).

در سال 2003، توزیع‌ها شامل فایل‌های فراداده به نام META شدند. yml ، نام توزیع، نسخه، وابستگی‌ها و سایر اطلاعات مفید را نشان می‌دهد. با این حال، همه توزیع ها حاوی ابرداده نیستند. هنگامی که ابرداده در یک توزیع وجود ندارد، نرم افزار PAUSE سعی می کند کد موجود در توزیع را تجزیه و تحلیل کند تا به دنبال همان اطلاعات باشد. این لزوما خیلی قابل اعتماد نیست. در سال 2010، نسخه 2 این مشخصات [9] ایجاد شد تا از طریق یک فایل جدید به نام META استفاده شود. json ، با فایل فرمت YAML که اغلب برای سازگاری با عقب نیز گنجانده شده است .

با هزاران توزیع، CPAN باید ساختاری داشته باشد تا مفید باشد. نویسندگان اغلب ماژول های خود را بر اساس هدف یا دامنه در سلسله مراتب طبیعی نام ماژول های پرل (مانند Apache::DBIیا Lingua::EN::Inflect) قرار می دهند، اگرچه این مورد اجرا نمی شود.

توزیع های ماژول CPAN معمولاً نام هایی به شکل CGI-Application-3.1 دارند (که در آن :: استفاده شده در نام ماژول با یک خط تیره جایگزین شده و شماره نسخه به نام اضافه شده است)، اما این فقط یک قرارداد است. ; بسیاری از توزیع های برجسته این قرارداد را شکسته اند، به ویژه آنهایی که حاوی چندین ماژول هستند. محدودیت‌های امنیتی مانع از جایگزینی یک توزیع با نام فایل مشابه می‌شوند، بنابراین تقریباً همه نام‌های توزیع شامل یک شماره نسخه هستند .

اجزاء

زیرساخت توزیع CPAN از شبکه جهانی بیش از 250 آینه در بیش از 60 کشور جهان تشکیل شده است. [10] هر آینه کامل میزبان حدود 31 گیگابایت داده است. [11]

اکثر آینه ها خود را به صورت ساعتی، روزانه یا دو روز از سایت اصلی CPAN به روز می کنند. [12] برخی از سایت ها سرورهای اصلی FTP هستند که منعکس کننده بسیاری از نرم افزارهای دیگر هستند، اما برخی دیگر صرفاً سرورهایی هستند که متعلق به شرکت هایی هستند که به شدت از پرل استفاده می کنند. در هر قاره به جز قطب جنوب حداقل دو آینه وجود دارد.

چندین موتور جستجو برای کمک به برنامه نویسان Perl در مرتب سازی CPAN نوشته شده است. این مقام جستجو .cpan تخصصی شامل جستجوی متنی، یک شاخص قابل مرور از ماژول ها، و کپی استخراج شده از تمام توزیع در حال حاضر در CPAN. در 16 مه 2018، بنیاد پرل اعلام کرد که search.cpan.org در تاریخ 29 ژوئن 2018 (پس از 19 سال کار)، به دلیل قدیمی بودن پایگاه کد و بار تعمیر و نگهداری، بسته خواهد شد. کاربران منتقل شده و به MetaCPAN جایگزین شخص ثالث هدایت خواهند شد. [13] [14]

آزمایش‌کنندگان CPAN گروهی از داوطلبان هستند که توزیع‌ها را هنگام بارگذاری در CPAN دانلود و آزمایش می‌کنند. این به نویسندگان این امکان را می‌دهد که ماژول‌های خود را بر روی بسیاری از پلتفرم‌ها و محیط‌هایی که در غیر این صورت به آن‌ها دسترسی نداشتند، آزمایش کنند، در نتیجه به ارتقای قابلیت حمل و همچنین درجه‌ای از کیفیت کمک می‌کند. آزمایش‌کنندگان دود گزارش‌هایی را ارسال می‌کنند، که سپس جمع‌آوری می‌شوند و برای انواع وب‌سایت‌های ارائه، از جمله سایت گزارش‌های اصلی، آمار و وابستگی‌ها استفاده می‌شوند.

نویسندگان می توانند توزیع های جدید را از طریق سرور آپلود نویسندگان Perl (PAUSE) در CPAN آپلود کنند . برای انجام این کار، آنها باید یک حساب PAUSE درخواست کنند.

پس از ثبت نام، ممکن است از یک رابط وب در pause.perl.org یا یک رابط FTP برای آپلود فایل ها در فهرست خود و حذف آنها استفاده کنند. ماژول‌های موجود در آپلود فقط در صورتی به‌عنوان متعارف ایندکس می‌شوند که نام ماژول قبلاً استفاده نشده باشد (اعطای مجوز اول ورود به آپلودکننده)، یا اگر آپلودکننده مجوز آن نام را داشته باشد، و اگر ماژول نسخه بالاتر از هر کدام باشد. ورودی موجود [15] این را می توان از طریق رابط وب PAUSE مشخص کرد.

CPAN.pm، CPANPLUS، و cpanminus

همچنین یک ماژول هسته پرل به نام CPAN وجود دارد. معمولاً با استفاده از نام CPAN.pm از خود مخزن متمایز می شود. CPAN.pm عمدتاً یک پوسته تعاملی است که می تواند برای جستجو، دانلود و نصب توزیع ها استفاده شود. یک پوسته تعاملی به نام cpan نیز در هسته Perl ارائه شده است و روش معمول اجرای CPAN.pm است. پس از یک فرآیند پیکربندی کوتاه و انتخاب آینه، از ابزارهای موجود در رایانه کاربر برای دانلود، بسته بندی، کامپایل، تست و نصب خودکار ماژول ها استفاده می کند. همچنین می تواند خود را به روز کند.

تلاش برای جایگزینی CPAN.pm با چیزی تمیزتر و مدرن تر منجر به مجموعه ماژول های CPANPLUS (یا CPAN++) شد. CPANPLUS کار پشتیبان دانلود، کامپایل و نصب ماژول ها را از پوسته تعاملی مورد استفاده برای صدور دستورات جدا می کند. همچنین از چندین ویژگی پیشرفته مانند بررسی امضای رمزنگاری و گزارش نتایج آزمایش پشتیبانی می کند. در نهایت، CPANPLUS می تواند یک توزیع را حذف نصب کند. CPANPLUS در نسخه 5.10.0 به هسته Perl اضافه شد و در نسخه 5.20.0 از آن حذف شد.

یک جایگزین کوچکتر و مدرنتر برای این نصب کننده های CPAN به نام cpanminus ساخته شد. cpanminus به گونه ای طراحی شده است که دارای حافظه بسیار کوچک تری باشد که اغلب در محیط های حافظه محدود مورد نیاز است و به عنوان یک اسکریپت مستقل قابل استفاده است به طوری که حتی می تواند خود را نصب کند و تنها به مجموعه مورد انتظار از ماژول های هسته Perl نیاز دارد تا در دسترس باشد. این نیز موجود است از CPAN عنوان ماژول برنامه :: cpanminus، که نصب cpanmاسکریپت این پیکربندی مداوم را حفظ نمی کند یا به آن متکی نیست، بلکه فقط توسط محیط و گزینه های خط فرمان پیکربندی می شود. cpanminus یک جزء پوسته تعاملی ندارد. فرمت cpanfile را برای تعیین پیش نیازها تشخیص می‌دهد، که در پروژه‌های پرل موقت که ممکن است برای نصب CPAN طراحی نشده باشند، مفید است. cpanminus همچنین توانایی حذف توزیع ها را دارد.

هر یک از این ماژول‌ها می‌توانند وابستگی‌های توزیع را بررسی کرده و به صورت بازگشتی هر پیش‌نیازی را، چه به‌طور خودکار یا با تأیید کاربر جداگانه، نصب کنند. هر کدام از FTP و HTTP پشتیبانی می کنند و می توانند از طریق فایروال ها و پروکسی ها کار کنند.

نفوذ

برنامه نویسان با تجربه Perl اغلب اظهار می کنند که نیمی از قدرت Perl در CPAN است. این برنامه قاتل پرل نامیده شده است . [16] تقریباً معادل PECL و PEAR برای PHP است . PyPI (پایتون صفحه اول بسته بندی) مخزن برای پایتون ؛ RubyGems for Ruby ; CRAN برای R ; npm برای Node.js ؛ LuaRocks برای Lua ; Maven برای جاوا ؛ و هک برای هاسکل. استفاده CPAN از فضاهای نام داوری، یک رژیم آزمایشی و یک سبک مستندسازی به خوبی تعریف شده، آن را منحصر به فرد می کند.

با توجه به اهمیت آن برای جامعه توسعه دهندگان Perl، CPAN هم شکل می گیرد و هم توسط فرهنگ Perl شکل می گیرد . Jarkko Hietaniemi ، "کتابدار استاد خود منصوب" ، اغلب در جوک های روز اول آوریل شرکت می کند . در 1 آوریل 2002 این سایت به طور موقت به CJAN نامگذاری شد ، جایی که "J" مخفف "Java" بود. در سال 2003، www.cpan.orgنام دامنه به آرشیو Matt's Script هدایت شد ، سایتی که در جامعه Perl به دلیل داشتن کد بد نوشته شده بدنام است. [17] [18] [19]

برخی از توزیع‌ها در CPAN به صورت جوک توزیع می‌شوند. Acme::سلسله مراتب برای ماژول شوخی محفوظ می باشد، به عنوان مثال، تابعی را Acme::Don'tاضافه می کند don'tکه کد داده شده به آن را اجرا نمی کند (برای تکمیل doداخلی، که انجام می دهد). حتی خارج از Acme::سلسله مراتب، برخی از ماژول ها هنوز عمدتا برای سرگرمی نوشته می شوند. یک مثال این است Lingua::Romana::Perligataکه می توان از آن برای نوشتن برنامه های Perl در زیر مجموعه ای از لاتین استفاده کرد.

در سال 2005، گروهی از توسعه دهندگان پرل که به جاوا اسکریپت نیز علاقه داشتند گرد هم آمدند تا JSAN ، شبکه آرشیو جاوا اسکریپت را ایجاد کنند . JSAN یک پورت تقریبا مستقیم از زیرساخت CPAN برای استفاده با زبان جاوا اسکریپت است که در بیشتر طول عمر خود یک "جامعه" منسجم نداشت.

در سال 2008، پس از یک ملاقات تصادفی با آدام کندی ، مدیر CPAN در کنفرانس توسعه دهندگان منبع باز، توسعه دهنده هسته لینوکس، Rusty Russell ، CCAN، شبکه جامع آرشیو C را ایجاد کرد. CCAN یک پورت مستقیم از معماری CPAN برای استفاده با زبان C است .

CRAN، شبکه جامع آرشیو R، مجموعه‌ای از آینه‌ها است که میزبان توزیع(های) زبان برنامه‌نویسی R ، اسناد و برنامه‌های افزودنی است. [20]

مدیران

آدام کندی

آدام کندی در سال 2016

آدام کندی یک برنامه نویس استرالیایی پرل و یکی از چندین مدیر CPAN است. تحت شناسه نویسنده CPAN خود از ADAMK، او نگهدارنده بیش از 200 توزیع ماژول در CPAN است که او را در صدر جدول امتیازات مشارکت CPAN قرار می دهد. [21] کندی اولین نگهدارنده بیش از 200 ماژول CPAN است که بسیاری از آنها را از نویسندگان دیگر پذیرفته و در مخزن باز خود گنجانده است، که برای استفاده توسط هر نویسنده ثبت شده CPAN در دسترس است. او یک مجری مکرر در کنفرانس منبع باز مانند است OSDC ، OSCON و YAPC و همچنین هکاتون پرل QA.

کندی ماژول های مهمی را برای زبان برنامه نویسی پرل توسعه داده است، به ویژه در زمینه ابزارهایی برای بهبود توسعه و ساخت زنجیره ابزار مانند PPI [22] (تجزیه کننده پرل)، CPAN::Metrics [23] (تولید معیارها در 16). m+ خطوط کد در CPAN)، پرل قابل حمل [24] (معروف به «Perl on a Stick») و Padre (یک IDE Perl) . او همچنین مدافع قوی برابری پلت فرم برای Perl در ویندوز بوده است و هم Win32 Perl Wiki و هم Strawberry Perl را برای ویندوز راه اندازی کرد.

PPI

تجزیه کننده Perl PPI یک بلوک ساختمانی ضروری برای تجزیه و تحلیل کد Perl 5، اسناد و ابزارهای refactoring ارائه کرده است. Perl::Critic [25] از PPI برای نقد کد منبع Perl در برابر معیارهای Perl Best Practices استفاده می کند . Padre IDE از PPI برای تجزیه و تحلیل کد و refactoring استفاده می کند. مستندات PPI به این حقیقت اشاره می کند که "فقط perl (مفسر) می تواند Perl (کد منبع) را تجزیه کند" زیرا یک زبان پویا است . یک پست در PerlMonks یک مدرک رسمی ارائه می کند. [26]

توت فرنگی پرل

Strawberry Perl یک توزیع باینری از Perl برای سیستم عامل ویندوز است. برخلاف اکثر توزیع‌های Perl مبتنی بر ویندوز، Strawberry Perl همچنین یک کامپایلر C، ابزار ساخت و برخی ماژول‌های از پیش پیکربندی شده را برای بهبود سازگاری با محیط ویندوز بسته‌بندی می‌کند. هدف از این توزیع، ارائه یک محیط کاربردی برای آزمایش و استفاده از آخرین ماژول های موجود از CPAN است. لری وال ، خالق پرل، این پورت را به عنوان پورت خوب برای ویندوز تایید کرده است. [27]

پرل قابل حمل (معروف به "پرل روی چوب")

پرل قابل حمل [28] اولین توزیع پرل مناسب برای نصب بر روی دستگاه های فلش مموری قابل حمل، آی پاد، تلفن های همراه، دوربین ها و غیره است. اولین نسخه در OSCON 2008 بر روی درایوهای کوچک USB توزیع شد. [29] کار اولیه برای این پروژه تامین مالی شد. با کمک مالی از بنیاد پرل.

کتابشناسی گفتگو

آدام کندی در تعدادی از کنفرانس‌های فنی در سرتاسر جهان از جمله در OSCON ، OSDC ، Linux.conf.au و بسیاری از رویدادهای YAPC سخنرانی کرده است. این گفتگوها عبارتند از:

  • PITA - تست در مقیاس مسخره ، YAPC::NA 2006 [30]
  • هیچ چیز ممکن نیست اشتباه شود ، Linux.conf.au 2007 [31]
  • Strawberry Perl، دستیابی به برابری پلتفرم Win32 ، OSCON 2008 [32]
  • Padre - Perl IDE برای افراد عادی ، OSDC 2009 [33]
کار فعلی

آدام در سال 2012 به سانفرانسیسکو ، کالیفرنیا در ایالات متحده نقل مکان کرد . او از سال 2012 تا 2015 برای Kaggle کار کرد و در سال 2016 به عنوان مهندس با اپل شروع به کار کرد. [34] او در حال حاضر سمت مدیر مهندسی داده، Siri Search در اپل را دارد. [35]

منابع

  1. ^ "صفحه اول CPAN" . بازبینی شده در 27 ژانویه 2016 .
  2. ^ "پرل و ماژول های CPAN چگونه مجوز دارند؟" . بیشتر، هرچند نه همه، ماژول‌ها در CPAN تحت مجوز عمومی عمومی گنو (GPL) یا مجوز هنری مجوز دارند...
  3. «خط زمانی پرل و فرهنگ آن» .
  4. «Grokking the CPAN» (PDF) . من پیشنهاد می کنم که برای ایجاد یک ساختار یکپارچه همکاری کنیم، بسیار شبیه پروژه CTAN که موفق به ایجاد مجموعه ای از سایت های متعارف برای TeX شده است.
  5. ^ "ExtUtils::MakeMaker - ایجاد یک ماژول Makefile - مرورگر Perldoc" . perldoc.perl.org . بازبینی شده در 18 نوامبر 2020 .
  6. ^ "List::Util - مجموعه ای از برنامه های فرعی لیست کاربردی - مرورگر Perldoc" . perldoc.perl.org . بازبینی شده در 18 نوامبر 2020 .
  7. ^ "BackPAN" . بازیابی شده در 20 دسامبر 2019 .
  8. ^ "Gitpan چیست؟" . 2 دسامبر 2015 . بازبینی شده در 16 نوامبر 2016 .
  9. "CPAN::Meta::History" . بازیابی شده در 20 دسامبر 2019 .
  10. «شبکه آینه CPAN» . بازبینی شده در 16 نوامبر 2016 .
  11. ^ "چگونه CPAN را آینه کنیم" . CPAN.org . بازبینی شده در 15 نوامبر 2016 .
  12. «وضعیت و آمار CPAN» . بازیابی شده در 9 مه 2010 .
  13. «پایان یک عصر: خداحافظی با search.cpan.org» . log.perl.org . بازبینی شده در 22 مه 2018 .
  14. «خداحافظی با search.cpan.org» . perl.com . بازبینی شده در 26 ژوئن 2018 .
  15. «مدل عملیاتی مکث» . بازیابی شده در 20 دسامبر 2019 .
  16. «Re: Killer Apps in PERL» . بازبینی شده در 24 فوریه 2013 .
  17. "عناصر برنامه نویسی با پرل" . 12 اکتبر 2000 . بازبینی شده در 25 آوریل 2013 .
  18. «از این formmail.pl برای سرگرمی و، خوب، سرگرمی بهره برداری کنید» . 7 آگوست 2001 . بازبینی شده در 25 آوریل 2013 .
  19. "آرشیو اسکریپت مت دوباره ضربه می زند!" . 4 جولای 2001 . بازبینی شده در 25 آوریل 2013 .
  20. ^ "کرن چیست؟" . بازیابی شده در 20 دسامبر 2019 .
  21. ^ http://thegestalt.org/simon/perl/wholecpan.html
  22. ^ https://metacpan.org/module/PPI
  23. ^ https://metacpan.org/module/CPAN::Metrics
  24. ^ https://metacpan.org/module/Portable
  25. ^ https://metacpan.org/module/Perl::Critic
  26. ^ http://www.perlmonks.org/?node_id=663393
  27. ^ http://www.computerworld.com.au/article/270267/-z_programming_languages_perl?pp=3&fp=&fpid=
  28. «کپی بایگانی شده» . بایگانی شده از نسخه اصلی در 21 جولای 2011 . بازیابی شده در 30 ژوئن 2009 .CS1 maint: نسخه بایگانی شده به عنوان عنوان ( پیوند )
  29. «کپی بایگانی شده» . بایگانی شده از نسخه اصلی در 6 ژوئیه 2010 . بازیابی شده در 30 ژوئن 2009 .CS1 maint: نسخه بایگانی شده به عنوان عنوان ( پیوند )
  30. ^ http://www.media-landscape.com/yapc/2006-06-26.AdamKennedy/
  31. ^ http://lca2007.linux.org.au/talk/122.html
  32. ^ http://en.oreilly.com/oscon2008/public/schedule/detail/2769
  33. «کپی بایگانی شده» . بایگانی شده از نسخه اصلی در 24 اکتبر 2009 . بازیابی شده در 28 نوامبر 2009 .CS1 maint: نسخه بایگانی شده به عنوان عنوان ( پیوند )
  34. ^ https://www.linkedin.com/in/adamatalias
  35. «Speaker Bio 2019» .

پیوندهای خارجی