CPAN
Comprehensive Perl Archive Network ( CPAN ) är ett arkiv med över 250 000 programvarumoduler och medföljande dokumentation för 39 000 distributioner, skriven i programmeringsspråket Perl av över 12 000 bidragsgivare. CPAN kan beteckna antingen arkivnätverket eller Perl-programmet som fungerar som ett gränssnitt till nätverket och som en automatiserad mjukvaruinstallerare (något som en pakethanterare ). De flesta program på CPAN är gratis och öppen källkod .
Historia
CPAN skapades 1993 och har varit aktivt online sedan oktober 1995. Det är baserat på CTAN -modellen och började som en plats för att förena strukturen i spridda Perl-arkiv.
Roll
Liksom många programmeringsspråk har Perl mekanismer för att använda externa kodbibliotek , vilket gör att en fil innehåller vanliga rutiner som används av flera program. Perl kallar dessa moduler . Perl-moduler installeras vanligtvis i en av flera kataloger vars sökvägar placeras i Perl- tolken när den först kompileras ; på Unix-liknande operativsystem inkluderar vanliga sökvägar /usr/lib/perl5 , /usr/local/lib/perl5 , och flera av deras underkataloger.
Perl levereras med en liten uppsättning kärnmoduler . Vissa av dessa utför bootstrapping-uppgifter, såsom ExtUtils::MakeMaker, som används för att skapa Makefiler för att bygga och installera andra tilläggsmoduler; andra, som List::Util, används bara ofta.
CPAN:s huvudsakliga syfte är att hjälpa programmerare att hitta moduler och program som inte ingår i Perl-standarddistributionen. Dess struktur är decentraliserad. Författare underhåller och förbättrar sina egna moduler. Forking, och att skapa konkurrerande moduler för samma uppgift eller syfte, är vanligt. Det finns ett felspårningssystem från tredje part som automatiskt ställs in för alla uppladdade distributioner, men författare kan välja att använda ett annat felspårningssystem som GitHub . På samma sätt, även om GitHub är en populär plats för att lagra källan för distributioner, kan den lagras var som helst där författaren föredrar, eller kanske inte alls vara allmänt tillgänglig. Underhållare kan ge tillstånd till andra att underhålla eller ta över sina moduler, och behörigheter kan beviljas av administratörer för de som vill ta över övergivna moduler. Tidigare versioner av uppdaterade distributioner behålls på CPAN tills de raderas av uppladdaren, och ett sekundärt spegelnätverk som kallas BackPAN behåller distributioner även om de tas bort från CPAN. Dessutom är den fullständiga historiken för CPAN och alla dess moduler tillgänglig som GitPAN-projektet, vilket gör det enkelt att se hela historiken för alla moduler och för enkelt underhåll av gafflar. CPAN används också för att distribuera nya versioner av Perl, såväl som relaterade projekt, som Parrot och Raku .
Strukturera
Filer på CPAN kallas distributioner . En distribution kan bestå av en eller flera moduler, dokumentationsfiler eller program paketerade i ett vanligt arkiveringsformat, till exempel ett gzippat tar -arkiv eller en ZIP- fil. Distributioner innehåller ofta installationsskript (vanligtvis kallade Makefile.PL eller Build.PL ) och testskript som kan köras för att verifiera att distributionens innehåll fungerar korrekt. Nya distributioner laddas upp till Perl Authors Upload Server, eller PAUSE (se avsnittet Ladda upp distributioner med PAUSE ) .
År 2003 började distributioner inkludera metadatafiler, kallade META. yml , som anger distributionens namn, version, beroenden och annan användbar information; dock innehåller inte alla distributioner metadata. När metadata inte finns i en distribution kommer PAUSE:s programvara att försöka analysera koden i distributionen för att leta efter samma information; detta är inte nödvändigtvis särskilt tillförlitligt. Under 2010 skapades version 2 av denna specifikation för att användas via en ny fil som heter META. json , med YAML-formatfilen ofta också inkluderad för bakåtkompatibilitet .
Med tusentals distributioner måste CPAN struktureras för att vara användbar. Författare placerar ofta sina moduler i den naturliga hierarkin av Perl-modulnamn (som Apache::DBI
eller Lingua::EN::Inflect
) enligt syfte eller domän, även om detta inte upprätthålls.
CPAN-moduldistributioner har vanligtvis namn i form av CGI-Application-3.1 (där :: som används i modulens namn har ersatts med ett bindestreck och versionsnumret har lagts till i namnet), men detta är bara en konvention ; många framstående distributioner bryter mot konventionen, särskilt de som innehåller flera moduler. Säkerhetsrestriktioner förhindrar att en distribution någonsin ersätts med ett identiskt filnamn, så praktiskt taget alla distributionsnamn innehåller ett versionsnummer .
Komponenter
Distributionsinfrastrukturen för CPAN består av dess världsomspännande nätverk av mer än 250 speglar i mer än 60 länder. Varje hel spegel är värd för cirka 31 gigabyte data.
De flesta speglar uppdaterar sig själva varje timme, dagligen eller två gånger om dagen från CPAN-huvudwebbplatsen. Vissa webbplatser är stora FTP-servrar som speglar massor av annan programvara, men andra är helt enkelt servrar som ägs av företag som använder Perl mycket. Det finns minst två speglar på varje kontinent utom Antarktis.
Flera sökmotorer har skrivits för att hjälpa Perl-programmerare att sortera igenom CPAN. Den officiella
CPAN-testare är en grupp volontärer som kommer att ladda ner och testa distributioner när de laddas upp till CPAN. Detta gör det möjligt för författarna att få sina moduler testade på många plattformar och miljöer som de annars inte skulle ha tillgång till, vilket bidrar till att främja portabilitet, samt en viss kvalitet. Röktestare skickar rapporter, som sedan sammanställs och används för en mängd olika presentationswebbplatser, inklusive huvudrapportwebbplatsen, statistik och beroenden.
Författare kan ladda upp nya distributioner till CPAN via Perl Authors Upload Server ( PAUS). För att göra det måste de begära ett PAUSE-konto.
När de väl är registrerade kan de använda ett webbgränssnitt på pause.perl.org eller ett FTP- gränssnitt för att ladda upp filer till sin katalog och ta bort dem. Moduler i uppladdningen kommer endast att indexeras som kanoniska om modulnamnet inte har använts tidigare (ger först till kvarn- tillstånd till uppladdaren), eller om uppladdaren har behörighet för det namnet och om modulen är en högre version än någon annan befintlig post. Detta kan specificeras via PAUSEs webbgränssnitt.
CPAN.pm, CPANPLUS och cpanminus
Det finns också en Perl-kärnmodul som heter CPAN; det är vanligtvis särskiljt från själva förvaret genom att använda namnet CPAN.pm. CPAN.pm är huvudsakligen ett interaktivt skal som kan användas för att söka efter, ladda ner och installera distributioner. Ett interaktivt skal kallat cpan finns också i Perl-kärnan, och är det vanliga sättet att köra CPAN.pm. Efter en kort konfigurationsprocess och spegelval använder den verktyg som finns på användarens dator för att automatiskt ladda ner, packa upp, kompilera, testa och installera moduler. Den kan också uppdatera sig själv.
Ett försök att ersätta CPAN.pm med något renare och modernare resulterade i uppsättningen CPANPLUS (eller CPAN++) med moduler. CPANPLUS separerar back-end-arbetet med att ladda ner, kompilera och installera moduler från det interaktiva skalet som används för att utfärda kommandon. Den stöder också flera avancerade funktioner, såsom kontroll av kryptografisk signatur och rapportering av testresultat. Slutligen kan CPANPLUS avinstallera en distribution. CPANPLUS lades till i Perl-kärnan i version 5.10.0 och togs bort från den i version 5.20.0.
Ett mindre, smidigare modernt alternativ till dessa CPAN-installatörer utvecklades kallat cpanminus. cpanminus designades för att ha ett mycket mindre minnesutrymme som ofta krävs i begränsade minnesmiljöer, och för att kunna användas som ett fristående skript så att det till och med kan installera sig självt, vilket kräver att endast den förväntade uppsättningen av kärn-Perl-moduler är tillgängliga. Den är också tillgänglig från CPAN som modulen App::cpanminus, som installerar cpanm -skriptet. Den upprätthåller eller förlitar sig inte på en beständig konfiguration, utan konfigureras endast av miljön och kommandoradsalternativen. cpanminus har ingen interaktiv skalkomponent. Den känner igen cpanfil-formatet för att specificera förutsättningar, användbart i ad-hoc Perl-projekt som kanske inte är designade för CPAN-installation. cpanminus har också möjlighet att avinstallera distributioner.
Var och en av dessa moduler kan kontrollera en distributions beroenden och rekursivt installera eventuella förutsättningar, antingen automatiskt eller med individuellt användargodkännande. Var och en stöder FTP och HTTP och kan fungera via brandväggar och proxyservrar.
Inflytande
Erfarna Perl-programmerare kommenterar ofta att hälften av Perls kraft finns i CPAN. Den har kallats Perls mördarapp . Det motsvarar ungefär Composer för PHP ; PyPI - förrådet (Python Package Index) för Python ; RubyGems för Ruby ; CRAN för R ; npm för Node.js ; LuaRocks för Lua ; Maven för Java ; och Hackage för Haskell . CPAN:s användning av arbitrerade namnutrymmen, en testregim och en väldefinierad dokumentationsstil gör den unik.
Med tanke på dess betydelse för Perl-utvecklargemenskapen formar och formas CPAN av Perls kultur . Dess "självutnämnde mästerbibliotekarie", Jarkko Hietaniemi, deltar ofta i aprilskämten ; den 1 april 2002 döptes platsen tillfälligt till CJAN , där "J" stod för "Java". 2003 omdirigerades domännamnet www.cpan.org till
Matt's Script Archive , en webbplats som är ökända i Perl-gemenskapen för att ha dåligt skriven kod.
Vissa av distributionerna på CPAN distribueras som skämt. Acme ::- hierarkin
är reserverad för skämtmoduler; till exempel, Acme::Don't
lägger till en don't
-funktion som inte kör koden som ges till den (för att komplettera den inbyggda do , vilket gör det).
Även utanför Acme::-
hierarkin är vissa moduler fortfarande skrivna till stor del för nöjes skull; ett exempel är Lingua::Romana::Perligata
, som kan användas för att skriva Perl-program i en delmängd av latin.
2005 gick en grupp Perl-utvecklare som också hade ett intresse för JavaScript samman för att skapa JSAN, JavaScript Archive Network. JSAN är en nästan direkt port för CPAN-infrastrukturen för användning med JavaScript-språket, som under större delen av sin livslängd inte hade en sammanhållen "gemenskap".
2008, efter ett tillfälligt möte med CPAN-administratören Adam Kennedy på Open Source Developers Conference, skapade Linux-kärnutvecklaren Rusty Russell CCAN, Comprehensive C Archive Network. CCAN är en direktport av CPAN-arkitekturen för användning med C-språket .
CRAN, Comprehensive R Archive Network, är en uppsättning speglar som är värd för R-programmeringsspråksdistribution (er), dokumentation och bidragande tillägg.
externa länkar
- Officiell hemsida
- MetaCPAN
- Lista över officiella CPAN-speglar , status för speglar
- ZCAN - "The Zen of Comprehensive Archive Networks" - ett dokument som syftar till att förklara hur och varför CPAN lyckades och hur man kopierar det i liknande ansträngningar. (9 januari 2003 av Jarkko Hietaniemi).