Knowledge

CPAN

Source 📝

148:. Similarly, though GitHub is a popular location to store the source for distributions, it may be stored anywhere the author prefers, or may not be publicly accessible at all. Maintainers may grant permissions to others to maintain or take over their modules, and permissions may be granted by admins for those wishing to take over abandoned modules. Previous versions of updated distributions are retained on CPAN until deleted by the uploader, and a secondary mirror network called BackPAN retains distributions even if they are deleted from CPAN. Also, the complete history of the CPAN and all its modules is available as the GitPAN project, allowing to easily see the complete history for all the modules and for easy maintenance of forks. CPAN is also used to distribute new versions of Perl, as well as related projects, such as 957: 979: 201:, indicating the distribution's name, version, dependencies, and other useful information; however, not all distributions contain metadata. When metadata is not present in a distribution, the PAUSE's software will try to analyze the code in the distribution to look for the same information; this is not necessarily very reliable. In 2010, version 2 of this specification was created to be used via a new file called 316:
A smaller, leaner modern alternative to these CPAN installers was developed called cpanminus. cpanminus was designed to have a much smaller memory footprint as often required in limited memory environments, and to be usable as a standalone script such that it can even install itself, requiring only
321:
script. It does not maintain or rely on a persistent configuration, but is configured only by the environment and command-line options. cpanminus does not have an interactive shell component. It recognizes the cpanfile format for specifying prerequisites, useful in ad-hoc Perl projects that may
234:
used in the module's name has been replaced with a dash, and the version number has been appended to the name), but this is only a convention; many prominent distributions break the convention, especially those that contain multiple modules. Security restrictions prevent a distribution from ever
272:
CPAN Testers are a group of volunteers, who will download and test distributions as they are uploaded to CPAN. This enables the authors to have their modules tested on many platforms and environments that they would otherwise not have access to, thus helping to promote portability, as well as a
312:
An effort to replace CPAN.pm with something cleaner and more modern resulted in the CPANPLUS (or CPAN++) set of modules. CPANPLUS separates the back-end work of downloading, compiling, and installing modules from the interactive shell used to issue commands. It also supports several advanced
268:
includes textual search, a browsable index of modules, and extracted copies of all distributions currently on the CPAN. On 16 May 2018, the Perl Foundation announced that search.cpan.org would be shut down on 29 June 2018 (after 19 years of operation), due to its aging codebase and maintenance
254:
Most mirrors update themselves hourly, daily or bidaily from the CPAN master site. Some sites are major FTP servers which mirror lots of other software, but others are simply servers owned by companies that use Perl heavily. There are at least two mirrors on every continent except Antarctica.
308:
is also provided in the Perl core, and is the usual way of running CPAN.pm. After a short configuration process and mirror selection, it uses tools available on the user's computer to automatically download, unpack, compile, test, and install modules. It is also capable of updating itself.
143:
CPAN's main purpose is to help programmers locate modules and programs not included in the Perl standard distribution. Its structure is decentralized. Authors maintain and improve their own modules. Forking, and creating competing modules for the same task or purpose, is common. There is a
20: 303:
There is also a Perl core module named CPAN; it is usually differentiated from the repository itself by using the name CPAN.pm. CPAN.pm is mainly an interactive shell which can be used to search for, download, and install distributions. An interactive shell called
313:
features, such as cryptographic signature checking and test result reporting. Finally, CPANPLUS can uninstall a distribution. CPANPLUS was added to the Perl core in version 5.10.0, and removed from it in version 5.20.0.
471:, the JavaScript Archive Network. The JSAN is a near-direct port of the CPAN infrastructure for use with the JavaScript language, which for most of its lifespan did not have a cohesive "community". 187:) and test scripts which can be run to verify the contents of the distribution are functioning properly. New distributions are uploaded to the Perl Authors Upload Server, or PAUSE (see the section 295:
permission to the uploader), or if the uploader has permission for that name, and if the module is a higher version than any existing entry. This can be specified through PAUSE's web interface.
273:
degree of quality. Smoke testers send reports, which are then collated and used for a variety of presentation websites, including the main reports site, statistics and dependencies.
291:
interface to upload files to their directory and delete them. Modules in the upload will only be indexed as canonical if the module name has not been used before (granting
329:
and recursively install any prerequisites, either automatically or with individual user approval. Each support FTP and HTTP and can work through firewalls and proxies.
215:
With thousands of distributions, CPAN needs to be structured to be useful. Authors often place their modules in the natural hierarchy of Perl module names (such as
247:
The distribution infrastructure of CPAN consists of its worldwide network of more than 250 mirrors in more than 60 countries. Each full mirror hosts around 36
144:
third-party bug tracking system that is automatically set up for any uploaded distribution, but authors may opt to use a different bug tracking system such as
54:
can denote either the archive network or the Perl program that acts as an interface to the network and as an automated software installer (somewhat like a
1002: 570:
I propose that we cooperate to create a unified structure, much like the CTAN project which has managed to create a collection of canonical sites for TeX
413: 317:
the expected set of core Perl modules to be available. It is also available from CPAN as the module App::cpanminus, which installs the
168:. A distribution may consist of one or more modules, documentation files, or programs packaged in a common archiving format, such as a 468: 1001:- a document that aims to explain how and why CPAN succeeded and how to duplicate it in similar efforts. (9 January 2003 by 962: 482:
created the CCAN, the Comprehensive C Archive Network. The CCAN is a direct port of the CPAN architecture for use with the
1443: 536:
Most, though not all, modules on CPAN are licensed under the GNU General Public License (GPL) or the Artistic license...
405:. CPAN's use of arbitrated name spaces, a testing regime and a well defined documentation style makes it unique. 1030: 402: 337:
Experienced Perl programmers often comment that half of Perl's power is in the CPAN. It has been called Perl's
366: 354: 59: 1284: 1179: 1090: 394: 362: 326: 153: 140:
for building and installing other extension modules; others, like List::Util, are merely commonly used.
386: 258:
Several search engines have been written to help Perl programmers sort through the CPAN. The official
1438: 475: 766: 816: 490: 483: 431: 370: 322:
not be designed for CPAN installation. cpanminus also has the ability to uninstall distributions.
136:. Some of these perform bootstrapping tasks, such as ExtUtils::MakeMaker, which is used to create 930: 791: 467:
In 2005, a group of Perl developers who also had an interest in JavaScript got together to create
1219: 1133: 107: 1378: 1279: 531: 288: 209: 149: 562: 653: 99: 90:
of code, making one file contain common routines used by several programs. Perl calls these
70:
CPAN was conceived in 1993 and has been active online since October 1995. It is based on the
408:
Given its importance to the Perl developer community, the CPAN both shapes and is shaped by
235:
being replaced with an identical filename, so virtually all distribution names do include a
1199: 1184: 1085: 269:
burden. Users will be transitioned and redirected to the third-party alternative MetaCPAN.
83: 47: 8: 1332: 1113: 417: 342: 87: 40: 36: 1353: 1100: 1023: 978: 1327: 1118: 1317: 1229: 1158: 1148: 439: 118: 103: 1402: 1239: 1058: 176: 172: 55: 843: 608:"List::Util - A selection of general-utility list subroutines - Perldoc Browser" 460:
hierarchy, some modules are still written largely for amusement; one example is
1363: 723: 681: 582: 374: 236: 74:
model and began as a place to unify the structure of scattered Perl archives.
1433: 1427: 1409: 1388: 1373: 1358: 1322: 1016: 745: 479: 548: 179:
file. Distributions will often contain installation scripts (usually called
1244: 1224: 1143: 1063: 886: 489:
CRAN, the Comprehensive R Archive Network, is a set of mirrors hosting the
390: 908: 864: 409: 1383: 1368: 1138: 1128: 1080: 95: 43:
and accompanying documentation for 39,000 distributions, written in the
1348: 1294: 434:, a site infamous in the Perl community for having badly written code. 338: 998: 607: 1209: 1068: 437:
Some of the distributions on the CPAN are distributed as jokes. The
115: 1204: 1194: 1123: 382: 358: 248: 137: 111: 19: 989: 702: 632: 583:"ExtUtils::MakeMaker - Create a module Makefile - Perldoc Browser" 452:
function that doesn't run the code given to it (to complement the
1253: 1214: 1189: 1108: 478:
at the Open Source Developers Conference, Linux kernel developer
464:, which can be used to write Perl programs in a subset of Latin. 398: 378: 194:
In 2003, distributions started to include metadata files, called
1299: 1289: 1263: 1258: 1174: 821: 658: 223:) according to purpose or domain, though this is not enforced. 145: 1249: 276:
Authors can upload new distributions to the CPAN through the
993: 493:
distribution(s), documentation, and contributed extensions.
226:
CPAN module distributions usually have names in the form of
1234: 1153: 1039: 422: 350: 204: 197: 169: 71: 44: 260: 420:
jokes; on 1 April 2002 the site was temporarily named to
346: 284: 972: 510: 1008: 984: 280:(PAUSE). To do so, they must request a PAUSE account. 188: 767:"The end of an era: Saying goodbye to search.cpan.org" 444:
hierarchy is reserved for joke modules; for instance,
952: 208:, with the YAML format file often also included for 298: 999:ZCAN - "The Zen of Comprehensive Archive Networks" 887:"Exploit this formmail.pl for fun and, well, fun" 325:Each of these modules can check a distribution's 283:Once registered, they may use a web interface at 1425: 474:In 2008, after a chance meeting with CPAN admin 426:, where the "J" stood for "Java". In 2003, the 1024: 532:"How are Perl and the CPAN modules licensed?" 716: 646: 1031: 1017: 977: 695: 98:are typically installed in one of several 836: 456:built-in, which does). Even outside the 412:. Its "self-appointed master librarian", 18: 129:, and several of their subdirectories. 1426: 909:"Matt's Script Archive Strikes Again!" 549:"The Timeline of Perl and its Culture" 353:(Python Package Index) repository for 86:, Perl has mechanisms to use external 1012: 164:Files on the CPAN are referred to as 963:Free and open-source software portal 865:"Elements of Programming with Perl" 792:"Saying goodbye to search.cpan.org" 503: 13: 189:Uploading distributions with PAUSE 29:Comprehensive Perl Archive Network 14: 1455: 948: 955: 299:CPAN.pm, CPANPLUS, and cpanminus 923: 901: 879: 857: 809: 784: 759: 738: 132:Perl comes with a small set of 16:Perl module software repository 674: 625: 600: 575: 555: 541: 524: 430:domain name was redirected to 341:. It is roughly equivalent to 1: 990:List of official CPAN mirrors 496: 242: 60:free and open source software 50:by over 12,000 contributors. 746:"CPAN Status and Statistics" 332: 159: 58:). Most software on CPAN is 7: 10: 1460: 1444:Package management systems 416:, often takes part in the 278:Perl Authors Upload Server 65: 1397: 1341: 1310: 1272: 1167: 1099: 1046: 844:"Re: Killer Apps in PERL" 462:Lingua::Romana::Perligata 1038: 817:"PAUSE Operating Model" 121:, common paths include 106:are placed in the Perl 77: 491:R programming language 210:backward compatibility 24: 703:"CPAN Mirror Network" 682:"CPAN::Meta::History" 432:Matt's Script Archive 84:programming languages 22: 724:"How to mirror CPAN" 127:/usr/local/lib/perl5 48:programming language 1333:Perl Best Practices 563:"Grokking the CPAN" 228:CGI-Application-3.1 221:Lingua::EN::Inflect 1354:Randal L. Schwartz 25: 1419: 1418: 1328:Intermediate Perl 1003:Jarkko Hietaniemi 994:status of mirrors 867:. 12 October 2000 662:. 2 December 2015 654:"What is Gitpan?" 511:"CPAN front page" 414:Jarkko Hietaniemi 119:operating systems 110:when it is first 1451: 1439:Archive networks 1318:Programming Perl 1159:Template Toolkit 1033: 1026: 1019: 1010: 1009: 981: 976: 975: 973:Official website 965: 960: 959: 958: 942: 941: 939: 937: 927: 921: 920: 918: 916: 905: 899: 898: 896: 894: 883: 877: 876: 874: 872: 861: 855: 854: 852: 850: 840: 834: 833: 831: 829: 813: 807: 806: 804: 802: 788: 782: 781: 779: 777: 763: 757: 756: 754: 752: 742: 736: 735: 733: 731: 720: 714: 713: 711: 709: 699: 693: 692: 690: 688: 678: 672: 671: 669: 667: 650: 644: 643: 641: 639: 629: 623: 622: 620: 618: 612:perldoc.perl.org 604: 598: 597: 595: 593: 587:perldoc.perl.org 579: 573: 572: 567: 559: 553: 552: 545: 539: 538: 528: 522: 521: 519: 517: 507: 463: 459: 455: 451: 447: 443: 429: 418:April Fools' Day 320: 307: 267: 264: 262: 222: 218: 41:software modules 39:of over 250,000 1459: 1458: 1454: 1453: 1452: 1450: 1449: 1448: 1424: 1423: 1420: 1415: 1393: 1337: 1306: 1268: 1240:Request Tracker 1163: 1095: 1059:Perl Foundation 1042: 1037: 971: 970: 961: 956: 954: 951: 946: 945: 935: 933: 931:"What is CRAN?" 929: 928: 924: 914: 912: 907: 906: 902: 892: 890: 889:. 7 August 2001 885: 884: 880: 870: 868: 863: 862: 858: 848: 846: 842: 841: 837: 827: 825: 815: 814: 810: 800: 798: 790: 789: 785: 775: 773: 765: 764: 760: 750: 748: 744: 743: 739: 729: 727: 722: 721: 717: 707: 705: 701: 700: 696: 686: 684: 680: 679: 675: 665: 663: 652: 651: 647: 637: 635: 631: 630: 626: 616: 614: 606: 605: 601: 591: 589: 581: 580: 576: 565: 561: 560: 556: 547: 546: 542: 530: 529: 525: 515: 513: 509: 508: 504: 499: 461: 457: 453: 449: 445: 438: 427: 335: 318: 305: 301: 259: 245: 220: 216: 162: 80: 68: 56:package manager 17: 12: 11: 5: 1457: 1447: 1446: 1441: 1436: 1417: 1416: 1414: 1413: 1406: 1398: 1395: 1394: 1392: 1391: 1386: 1381: 1376: 1371: 1366: 1364:Allison Randal 1361: 1356: 1351: 1345: 1343: 1339: 1338: 1336: 1335: 1330: 1325: 1320: 1314: 1312: 1308: 1307: 1305: 1304: 1303: 1302: 1297: 1292: 1282: 1276: 1274: 1270: 1269: 1267: 1266: 1261: 1256: 1247: 1242: 1237: 1232: 1227: 1222: 1217: 1212: 1207: 1202: 1197: 1192: 1187: 1182: 1177: 1171: 1169: 1165: 1164: 1162: 1161: 1156: 1151: 1146: 1141: 1136: 1131: 1126: 1121: 1116: 1111: 1105: 1103: 1097: 1096: 1094: 1093: 1088: 1083: 1078: 1077: 1076: 1071: 1066: 1056: 1050: 1048: 1044: 1043: 1036: 1035: 1028: 1021: 1013: 1007: 1006: 996: 987: 982: 967: 966: 950: 949:External links 947: 944: 943: 922: 900: 878: 856: 835: 808: 783: 758: 737: 715: 694: 673: 645: 624: 599: 574: 554: 540: 523: 501: 500: 498: 495: 410:Perl's culture 334: 331: 300: 297: 285:pause.perl.org 244: 241: 237:version number 161: 158: 123:/usr/lib/perl5 79: 76: 67: 64: 15: 9: 6: 4: 3: 2: 1456: 1445: 1442: 1440: 1437: 1435: 1432: 1431: 1429: 1422: 1412: 1411: 1407: 1405: 1404: 1400: 1399: 1396: 1390: 1389:Jesse Vincent 1387: 1385: 1382: 1380: 1377: 1375: 1374:Sean M. Burke 1372: 1370: 1367: 1365: 1362: 1360: 1359:Damian Conway 1357: 1355: 1352: 1350: 1347: 1346: 1344: 1340: 1334: 1331: 1329: 1326: 1324: 1323:Learning Perl 1321: 1319: 1316: 1315: 1313: 1309: 1301: 1298: 1296: 1293: 1291: 1288: 1287: 1286: 1283: 1281: 1278: 1277: 1275: 1271: 1265: 1262: 1260: 1257: 1255: 1251: 1248: 1246: 1243: 1241: 1238: 1236: 1233: 1231: 1228: 1226: 1223: 1221: 1218: 1216: 1213: 1211: 1208: 1206: 1203: 1201: 1198: 1196: 1193: 1191: 1188: 1186: 1183: 1181: 1178: 1176: 1173: 1172: 1170: 1166: 1160: 1157: 1155: 1152: 1150: 1147: 1145: 1142: 1140: 1137: 1135: 1132: 1130: 1127: 1125: 1122: 1120: 1117: 1115: 1112: 1110: 1107: 1106: 1104: 1102: 1098: 1092: 1089: 1087: 1084: 1082: 1079: 1075: 1072: 1070: 1067: 1065: 1062: 1061: 1060: 1057: 1055: 1052: 1051: 1049: 1045: 1041: 1034: 1029: 1027: 1022: 1020: 1015: 1014: 1011: 1004: 1000: 997: 995: 991: 988: 986: 983: 980: 974: 969: 968: 964: 953: 932: 926: 911:. 4 July 2001 910: 904: 888: 882: 866: 860: 845: 839: 824: 823: 818: 812: 797: 793: 787: 772: 768: 762: 747: 741: 725: 719: 704: 698: 683: 677: 661: 660: 655: 649: 634: 628: 613: 609: 603: 588: 584: 578: 571: 564: 558: 550: 544: 537: 533: 527: 512: 506: 502: 494: 492: 487: 485: 481: 480:Rusty Russell 477: 472: 470: 465: 441: 435: 433: 425: 424: 419: 415: 411: 406: 404: 400: 396: 392: 388: 384: 380: 376: 372: 368: 364: 360: 356: 352: 348: 344: 340: 330: 328: 323: 314: 310: 296: 294: 290: 286: 281: 279: 274: 270: 266: 256: 252: 250: 240: 238: 233: 229: 224: 213: 211: 207: 206: 200: 199: 192: 190: 186: 182: 178: 175:archive or a 174: 171: 167: 166:distributions 157: 155: 151: 147: 141: 139: 135: 130: 128: 124: 120: 117: 113: 109: 105: 101: 97: 93: 89: 85: 75: 73: 63: 61: 57: 53: 49: 46: 42: 38: 34: 30: 21: 1421: 1408: 1401: 1245:SpamAssassin 1225:Movable Type 1073: 1064:Perl Mongers 1053: 934:. Retrieved 925: 913:. Retrieved 903: 891:. Retrieved 881: 869:. Retrieved 859: 847:. Retrieved 838: 826:. Retrieved 820: 811: 799:. Retrieved 795: 786: 774:. Retrieved 771:log.perl.org 770: 761: 749:. Retrieved 740: 728:. Retrieved 718: 706:. Retrieved 697: 685:. Retrieved 676: 664:. Retrieved 657: 648: 636:. Retrieved 627: 615:. Retrieved 611: 602: 590:. Retrieved 586: 577: 569: 557: 543: 535: 526: 514:. Retrieved 505: 488: 476:Adam Kennedy 473: 466: 436: 428:www.cpan.org 421: 407: 336: 327:dependencies 324: 315: 311: 302: 292: 282: 277: 275: 271: 257: 253: 246: 231: 227: 225: 214: 202: 195: 193: 184: 180: 165: 163: 142: 134:core modules 133: 131: 126: 122: 96:Perl modules 91: 81: 69: 51: 32: 28: 26: 1384:brian d foy 1369:Audrey Tang 1139:Mojolicious 1129:DBIx::Class 936:20 December 849:24 February 828:20 December 708:16 November 687:20 December 666:16 November 638:20 December 617:18 November 592:18 November 446:Acme::Don't 230:(where the 217:Apache::DBI 181:Makefile.PL 108:interpreter 100:directories 1428:Categories 1349:Larry Wall 1101:Frameworks 726:. CPAN.org 516:27 January 497:References 484:C language 339:killer app 293:first-come 243:Components 82:Like many 37:repository 1379:chromatic 1210:Dada Mail 1200:Bricolage 1069:PerlMonks 730:22 August 633:"BackPAN" 333:Influence 251:of data. 249:gigabytes 160:Structure 138:Makefiles 116:Unix-like 88:libraries 23:CPAN logo 1410:Category 1205:Bugzilla 1195:BackupPC 1168:Software 1114:Catalyst 1074:archives 985:MetaCPAN 915:25 April 893:25 April 871:25 April 796:perl.com 383:LuaRocks 359:RubyGems 343:Composer 287:, or an 185:Build.PL 112:compiled 1403:Outline 1273:Related 1254:Foswiki 1215:ikiwiki 1190:AWStats 1109:BioPerl 1086:Perl VM 801:26 June 448:adds a 403:Haskell 399:Hackage 379:Node.js 170:gzipped 92:modules 66:History 35:) is a 1342:People 1300:MoarVM 1290:Rakudo 1280:Parrot 1264:Webmin 1259:W3Perl 1220:Makepp 1175:Amavis 1119:Dancer 1081:module 1047:Things 822:GitHub 776:22 May 659:GitHub 458:Acme:: 397:; and 355:Python 349:; the 261:search 150:Parrot 146:GitHub 102:whose 1311:Books 1295:rules 1250:TWiki 1230:Munin 1180:Argus 1149:Plack 1144:Moose 751:9 May 566:(PDF) 450:don't 391:Maven 319:cpanm 263:.cpan 203:META. 196:META. 114:; on 104:paths 1434:Perl 1285:Raku 1235:OTRS 1185:@SSP 1154:PSGI 1091:YAPC 1054:CPAN 1040:Perl 938:2019 917:2013 895:2013 873:2013 851:2013 830:2019 803:2018 778:2018 753:2010 732:2024 710:2016 689:2019 668:2016 640:2019 619:2020 594:2020 518:2016 469:JSAN 440:Acme 423:CJAN 401:for 395:Java 393:for 385:for 377:for 369:for 367:CRAN 363:Ruby 361:for 351:PyPI 345:for 306:cpan 265:.org 205:json 154:Raku 152:and 78:Role 72:CTAN 52:CPAN 45:Perl 33:CPAN 27:The 1134:LWP 1124:DBI 387:Lua 375:npm 347:PHP 289:FTP 219:or 198:yml 191:). 183:or 177:ZIP 173:tar 94:. 1430:: 1005:). 992:, 819:. 794:. 769:. 656:. 610:. 585:. 568:. 534:. 486:. 454:do 442::: 389:; 381:; 373:; 365:; 357:; 239:. 232::: 212:. 156:. 125:, 62:. 1252:/ 1032:e 1025:t 1018:v 940:. 919:. 897:. 875:. 853:. 832:. 805:. 780:. 755:. 734:. 712:. 691:. 670:. 642:. 621:. 596:. 551:. 520:. 371:R 31:(

Index


repository
software modules
Perl
programming language
package manager
free and open source software
CTAN
programming languages
libraries
Perl modules
directories
paths
interpreter
compiled
Unix-like
operating systems
Makefiles
GitHub
Parrot
Raku
gzipped
tar
ZIP
Uploading distributions with PAUSE
yml
json
backward compatibility
version number
gigabytes

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.