Кіріспе

Perl модульдер бағдарламалық қамтамасыз ету қоймасы

Comprehensive Perl Archive Network (CPAN) – 12 000-нан астам авторлар Perl бағдарламалау тілінде жазған 250 000-нан астам бағдарламалық модульдер мен 39 000 дистрибутивке арналған құжаттаманы қамтитын қойма. CPAN – бұл архивтік желіні немесе желіге интерфейс ретінде және автоматтандырылған бағдарламалық жасақтама орнатушысын (пакет менеджері сияқты) білдіретін Perl бағдарламасы болуы мүмкін. CPAN-дегі бағдарламалық жасақтаманың көп бөлігі тегін және ашық кодты бағдарламалық жасақтама болып табылады.

Тарих

CPAN 1993 жылы ойластырылған және 1995 жылдың қазанынан бері онлайн жұмыс істеп келеді. Ол CTAN үлгісіне негізделген және бастапқыда шашыраңқы Perl архивтерінің құрылымын біріктіру мақсатымен құрылған.

Рөл

Көптеген бағдарламалау тілдеріндей, Perl-де кодтың сыртқы кітапханаларын пайдалану мүмкіндігі бар, бұл бір файлда бірнеше бағдарлама қолданатын ортақ процедураларды сақтауға мүмкіндік береді. Perl мұндайларды модульдер деп атайды. Perl модульдері әдетте бірнеше каталогтардың бірінде орнатылады, олардың жолдары Perl интерпретаторы алғашқы компиляция кезінде анықталады; Unix сияқты операциялық жүйелерде /usr/lib/perl5, /usr/local/lib/perl5 және олардың көптеген қосалқы каталогтары кездеседі. Perl негізгі модульдердің шағын жиынтығымен бірге келеді. Олардың кейбіреулері, мысалы, ExtUtils::MakeMaker, басқа кеңейтім модульдерін құру және орнату үшін Makefiles жасауға арналған, ал List::Util сияқты басқалары кеңінен қолданылады. CPAN-ның басты мақсаты – бағдарламашыларға Perl стандартты дистрибуциясына кірмейтін модульдер мен бағдарламаларды табуға көмектесу. Оның құрылымы орталықтандырылмаған. Авторлар өз модульдерін күтіп, жақсартады. Бір мақсатта немесе бір тапсырма үшін модульдерді тармақтау және бәсекелесу кең таралған құбылыс. Кез келген жүктелген дистрибуция үшін автоматты түрде іске қосылатын үшінші тараптың қателерді іздеу жүйесі бар, бірақ авторлар GitHub сияқты басқа жүйелерді де пайдалана алады. Сол сияқты, GitHub дистрибуциялардың бастапқы кодын сақтауға танымал орын болғанымен, автор қалаған жерде сақтай алады немесе ол мүлдем қоғамдыққа қолжетімді болмауы мүмкін. Модульді күтіп-ұстаушылар басқаларға өз модульдерін күтуге немесе иеленуге рұқсат бере алады, ал әкімшілер тасталған модульдерді иеленгісі келетіндерге рұқсат бере алады. Жаңартылған дистрибуциялардың бұрынғы нұсқалары жүктеуші өшіргенге дейін CPAN-да сақталады, ал BackPAN деп аталатын қосымша айна желісі CPAN-нан өшірілген дистрибуцияларды сақтайды. Сонымен қатар, CPAN-ның және оның барлық модульдерінің толық тарихы GitPAN жобасы ретінде қолжетімді, бұл барлық модульдердің толық тарихын оңай көруге және тармақтарды оңай күтіп-ұстауға мүмкіндік береді. CPAN Perl-дің жаңа нұсқаларын, сондай-ақ Parrot және Raku сияқты байланысты жобаларды тарату үшін де қолданылады.

Құрылымы

CPAN-дегі файлдар таратулар деп аталады. Тарату бір немесе бірнеше модульдерден, құжаттама файлдарынан немесе gzipped tar архиві немесе ZIP файлы сияқты ортақ архивтік форматта жинақталған бағдарламалардан тұрады. Таратулар көбінесе орнату скрипттерін (әдетте Makefile.PL немесе Build.PL) және таратудың мазмұны дұрыс жұмыс істейтінін тексеру үшін орындалатын тест скрипттерін қамтиды. Жаңа таратулар Perl авторларының жүктеу серверіне немесе PAUSE-ке жүктеледі (PAUSE арқылы таратуларды жүктеу бөлімін қараңыз). 2003 жылы таратулар метадеректер файлдарын, META.yml деп аталатын файлдарды қамти бастады, олар таратудың атауын, нұсқасын, тәуелділіктерін және басқа да пайдалы ақпаратты көрсетеді; алайда, барлық таратуларда метадеректер болмайды. Егер таратуда метадеректер болмаса, PAUSE бағдарламалық жасақтамасы сол ақпаратты іздеу үшін таратудағы кодты талдауға тырысады; бірақ бұл міндетті түрде өте сенімді емес. 2010 жылы осы спецификацияның 2-ші нұсқасы META.json деп аталатын жаңа файл арқылы пайдалану үшін жасалды, YAML форматтағы файл да көбінесе кері үйлесімділік үшін қоса беріледі. Мыңдаған таратулармен CPAN-ды пайдалы ету үшін құрылымдау қажет. Авторлар өз модульдерін Perl модульдері атауының табиғи иерархиясына (мысалы, Apache::DBI немесе Lingua::EN::Inflect) мақсатына немесе саласына сәйкес орналастыруы мүмкін, бірақ бұл міндетті емес. CPAN модульдері таратулары әдетте CGI Application 3.1 сияқты атауларды иеленеді (модуль атауында қолданылатын :: сызықшамен ауыстырылады және нұсқа нөмірі атауға қосады), бірақ бұл тек конвенция; көптеген танымал таратулар, әсіресе бірнеше модульді қамтитындар, конвенцияны бұзады. Қауіпсіздік шектеулері таратудың бірдей файл атауымен ауыстырылуына жол бермейді, сондықтан барлық тарату атаулары нұсқа нөмірін қамтиды.

Құралымдары

CPAN-нің тарату инфрақұрылымы 60-тан астам елдегі 250-ден астам айнадан тұратын дүниежүзілік желіден құралған. Әрбір толық айна шамамен 31 гигабайт дерек сақтайды. Көптеген айналар CPAN негізгі сайтынан сағат сайын, күніне немесе екі күндік интервалмен жаңарады. Кейбір сайттар басқа көптеген бағдарламалық қамтамаларды көшіретін ірі FTP серверлері болып табылады, ал кейбіреулері Perl-ді кеңінен пайдаланатын компанияларға тиесілі серверлер. Антарктиданы қоспағанда, барлық континентте кем дегенде екі айна бар. Perl бағдарламашыларына CPAN-ді іздеуге көмектесу үшін бірнеше іздеу жүйелері жасалған. Ресми іздеу құралы мәтіндік іздеуді, модульдердің қарастырылатын индексін және қазіргі CPAN-дегі барлық дистрибутивтердің көшірмелерін қамтиды. 2018 жылдың 16 мамырында Perl Foundation search.cpan.org мекенжайының 2018 жылдың 29 маусымында (19 жылдық қызметтен кейін) ескі код базасы мен күтіп ұстау қиындықтарына байланысты жабылатынын хабарлады. Пайдаланушылар MetaCPAN – үшінші тараптан келген баламаға көшіріліп, қайта бағытталды. CPAN тестілеушілері – CPAN-ге жүктелген дистрибутивтерді жүктеу және тестілеу үшін еріктілерден құралған топ. Бұл авторларға өз модульдерін көптеген платформаларда және оларға әдетте қол жетімді болмайтын орталарда тестілеуге мүмкіндік береді, соның арқасында модульдердің тасымалдалуы мен сапасы жақсарады. «Түтін» тестілеушілері есептерді жібереді, олар жинақталып, негізгі есептер сайты, статистика және тәуелділіктер сияқты әртүрлі веб-сайттарда қолданылады. Авторлар Perl Authors Upload Server (PAUSE) арқылы CPAN-ге жаңа дистрибутивтерді жүктей алады. Ол үшін PAUSE тіркелгісін алу қажет. Тіркелгеннен кейін pause.perl.org мекенжайындағы веб-интерфейсті немесе FTP интерфейсін пайдаланып файлдарды өздерінің каталогына жүктеп, жоюға болады. Жүктелген модульдер, егер модуль атауы бұрын қолданылмаған болса (бірінші жүктеушіге рұқсат беру), немесе жүктеушінің осы атауға рұқсаты болса және модульдің нұсқасы барлық қолданыстағы жазбалардан жоғары болса ғана канондық ретінде индекстеледі. Бұл PAUSE веб-интерфейсі арқылы көрсетілуі мүмкін.

CPAN.pm, CPANPLUS және cpanminus

CPAN деп аталатын Perl негізгі модулі де бар; ол әдетте CPAN атауын пайдалану арқылы репозиторийдің өзінен ерекшеленеді. pm. CPAN. pm – негізінен дистрибутивтерді іздеу, жүктеу және орнату үшін қолданылатын интерактивті қабық. Perl ядросында интерактивті қабықша деп аталатын және CPAN. pm-ді іске қосудың әдеттегі тәсілі бар. Қысқа конфигурация процесінен және айнаны таңдаудан кейін ол пайдаланушының компьютерінде бар құралдарды пайдаланады, модульдерді автоматты түрде жүктейді, ашып, құрастырып, сынап, орнатады. Ол өзін-өзі жаңарта да алады. CPAN. pm-ді тазарақ және заманауирақ нәрсемен алмастыруға жасалған әрекет CPANPLUS (немесе CPAN++) модульдер жиынтығын тудырды. CPANPLUS модульдерді жүктеу, компиляциялау және орнату жұмысын, командаларды беру үшін қолданылатын интерактивті қабықтан бөліп көрсетеді. Сонымен қатар, ол бірнеше кеңейтілген мүмкіндіктерді, мысалы криптографиялық қолтаңбаны тексеру және сынақ нәтижелері туралы есеп беруді қолдайды. Соңында, CPANPLUS дистрибутивті жоюға да қабілетті. CPANPLUS 5.10.0 нұсқасында Perl ядросына қосылды және 5.20.0 нұсқасында одан алынып тасталды. Бұл CPAN орнатушыларына кішірек, жеңіл, заманауи балама ретінде cpanminus пайда болды. cpanminus жады көлемі шектеулі орталарда жиі қажет болатындай, жады көлемін азайту үшін және ол өзін-өзі орната алатын дербес скрипт ретінде қолдануға болады, тек қанағы негізгі Perl модульдерінің күтілетін жиынтығы қажет. Ол сондай-ақ CPAN-нан App::cpanminus модулі ретінде қол жетімді, ол осы скриптті орнатады. Ол тұрақты конфигурацияны сақтамайды немесе оған сүйенбейді, тек орта және командалық жол опциялары арқылы конфигурацияланады. cpanminus-тің интерактивті қабықша компоненті жоқ. Ол CPAN орнату үшін жоспарланбаған, кездейсоқ Perl жобаларында пайдалы, ал алдын ала талаптарды көрсету үшін cpanfile форматын таниды. cpanminus дистрибутивтерді жоюға да мүмкіндік береді. Бұл модульдердің әрқайсысы дистрибутивтің тәуелділіктерін тексеріп, кез келген алғышарттарды автоматты түрде немесе жеке пайдаланушының келісімімен рекурсивті түрде орната алады. Олардың әрқайсысы FTP және HTTP қолдауын ұсынады және өртендер мен проксилер арқылы жұмыс істей алады.

Ықпал

Тәжірибелі Perl бағдарламалаушылары жиі Perl-дің күшінің жартысы CPAN-де екенін айтады. Оны Perl-дің «өлтiрушi» қолданбасы деп атайды. Ол PHP-ге арналған Composer-ге, Python-ға арналған PyPI (Python Package Index) репозиторийiне, Ruby-ге арналған RubyGems-ке, R-ге арналған CRAN-ке, Node.js-ке арналған npm-ге, Lua үшін LuaRocks-қа, Java үшін Maven-ге және Haskell үшін Hackage-ке шамамен тең. CPAN-ның делдалдық атау кеңiстiктерiн, тест жүйесiн және анықталған құжаттама стилiн пайдалану оны ерекше етедi. Perl әзiрлеушiлер қауымдастығы үшін маңыздылығын ескере отырып, CPAN Perl мәдениетiн қалыптастырады және одан өзгерiс алады. Оның «өзiн-өзi тағайындаған бас кітапханашысы» Жарко Хиетаниеми жиi сәуiр бiрiншi күндерi жасалатын әзiлдерге қатысады; 2002 жылдың 1 сәуiрiнде сайт уақытша CJAN деп аталды, онда «J» әрпi «Java» дегендi бiлдiрдi. 2003 жылы www.cpan.org доменi Matt's Script Archive сайтына бағытталды, ол Perl қауымдастығында нашар жазылған кодтарымен әйгiлi. CPAN-дегi кейбiр дистрибутивтер әзiл ретiнде таралды. Acme:: иерархиясы әзiл модульдерi үшiн резервтелген; мысалы, Acme::Don't, берiлген кодты орындамайтын (do функциясына қарсы) функцияны қосады. Acme:: иерархиясынан тыс жерлерде де кейбiр модульдер көбiнесе ойын-сауық үшiн жазылады; мысалы, Lingua::Romana::Perligata, оны латын тiлiнiң кiшi жиынтығында Perl бағдарламаларын жазуға қолдануға болады. 2005 жылы JavaScript-ке қызығушылық танытқан Perl әзiрлеушiлерiнiң тобы JSAN, JavaScript Archive Network құру үшiн бiрлесiп жұмыс iстедi. JSAN - бұл JavaScript тiлiмен пайдалану үшiн CPAN инфрақұрылымының дерлiк дербес көшiрмесі, оның өмiрiнiң көп бөлiгiнде бiрлескен «қоғамдастық» болмады. 2008 жылы Open Source Developers Conference ашық кодты әзiрлеушiлер конференциясында CPAN әкiмшiсi Адам Кеннедимен кездескеннен кейiн Linux ядросының әзiрлеушiсi Расти Рассел CCAN, Comprehensive C Archive Network-тi құрды. CCAN - бұл C тiлiмен пайдалану үшiн CPAN архитектурасының дерлiк дербес көшiрмесі. CRAN, Comprehensive R Archive Network, R бағдарламалау тiлiнiң дистрибутивтерiн, құжаттамасын және қосымша кеңейтулердi қамтитын айналар жиынтығы.