The Comprehensive Perl Archive Network ( CPAN ) is a software repository of over 250,000 software modules and accompanying documentation for 39,000 distributions, written in the Perl programming language by over 12,000 contributors. CPAN 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 package manager ). Most software on CPAN is free and open source software .
43-510: CPAN was conceived in 1993 and has been active online since October 1995. It is based on the CTAN model and began as a place to unify the structure of scattered Perl archives. Like many programming languages , Perl has mechanisms to use external libraries of code, making one file contain common routines used by several programs. Perl calls these modules . Perl modules are typically installed in one of several directories whose paths are placed in
86-423: A gigabyte (GB) is 10 bytes and specifies the term gibibyte (GiB) to denote 2 bytes. These differences are still readily seen, for example, when a 400 GB drive's capacity is displayed by Microsoft Windows as 372 GB instead of 372 GiB. Analogously, a memory module that is labeled as having the size " 1 GB " has one gibibyte ( 1 GiB ) of storage capacity. In response to litigation over whether
129-625: A version number . 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 gigabytes of data. 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. Several search engines have been written to help Perl programmers sort through
172-499: A disk with an advertised capacity of, for example, 400 GB (meaning 400 000 000 000 bytes , equal to 372 GiB) might be reported by the operating system as " 372 GB ". For RAM , the JEDEC memory standards use IEEE 100 nomenclature which quote the gigabyte as 1 073 741 824 bytes (2 bytes). The difference between units based on decimal and binary prefixes increases as a semi-logarithmic (linear-log) function—for example,
215-466: 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 to which they otherwise lack access, thus improving portability, and 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. Authors can upload new distributions to
258-415: A notable example of this usage in software, which report files sizes in decimal units. The binary definition uses powers of the base 2, as does the architectural principle of binary computers . This usage is widely promulgated by some operating systems , such as Microsoft Windows in reference to computer memory (e.g., RAM ). This definition is synonymous with the unambiguous unit gibibyte . Since
301-658: 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 not be designed for CPAN installation. cpanminus also has the ability to uninstall distributions. Each of these modules can check a distribution's dependencies and recursively install any prerequisites, either automatically or with individual user approval. Each support FTP and HTTP and can work through firewalls and proxies. Experienced Perl programmers often comment that half of Perl's power
344-577: A standard definition of 1000 bytes, as well as a discouraged meaning of 1024 bytes. The latter binary usage originated as compromise technical jargon for byte multiples that needed to be expressed in a power of 2, but lacked a convenient name. As 1024 (2 ) is approximately 1000 (10 ), roughly corresponding to SI multiples, it was used for binary multiples as well. In 1998 the International Electrotechnical Commission (IEC) published standards for binary prefixes , requiring that
387-782: A subset of Latin. In 2005, a group of Perl developers who also had an interest in JavaScript got together to create JSAN , 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". In 2008, after a chance meeting with CPAN admin Adam Kennedy at the Open Source Developers Conference, Linux kernel developer Rusty Russell created
430-404: 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
473-600: Is active in the TeX community since 1983 and ran one of the largest ftp servers in Germany at that time.) CTAN was built in 1992, by Rainer Schöpf and Joachim Schrod in Germany, Sebastian Rahtz in the UK, and George Greenwade in the U.S. (George came up with the name). Today, there are still only four people who maintain the archives and the TeX catalogue updates: Erik Braun, Ina Dau, Manfred Lotz, and Petra Ruebe-Pugliese. The site structure
SECTION 10
#1732845424799516-516: 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 can also self-update. An effort to replace CPAN.pm with something cleaner and more modern resulted in the CPANPLUS (or CPAN++) set of modules. CPANPLUS separates
559-478: Is in the CPAN. It has been called Perl's killer app . It is roughly equivalent to Composer for PHP ; the PyPI (Python Package Index) repository for Python ; RubyGems for Ruby ; CRAN for R ; npm for Node.js ; LuaRocks for Lua ; Maven for Java ; and Hackage for Haskell . CPAN's use of arbitrated name spaces, a testing regime and a well defined documentation style makes it unique. Given its importance to
602-503: Is not enforced. CPAN module distributions usually have names in the form of CGI-Application-3.1 (where the :: 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 being replaced with an identical filename, so virtually all distribution names do include
645-464: 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 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 GitHub . Similarly, though GitHub
688-581: The International System of Units (SI). This is the recommended definition by the International Electrotechnical Commission (IEC). This definition is used in networking contexts and most storage media , particularly hard drives , flash -based storage, and DVDs , and is also consistent with the other uses of the SI prefix in computing, such as CPU clock speeds or measures of performance . The file manager of Mac OS X version 10.6 and later versions are
731-453: The MiKTeX distribution of TeX, constantly mirror most of CTAN. Before CTAN there were a number of people who made some TeX materials available for public download, but there was no systematic collection. At a podium discussion that Joachim Schrod organized at the 1991 EuroTeX conference, the idea arose to bring together the separate collections. (Joachim was interested in this topic because he
774-660: The American and the German sites have moved thrice. The American site was first at Sam Houston State University under George Greenwade, in 1995 it moved to UMass Boston where it was run by Karl Berry . In 1999 it moved to Saint Michael's College in Colchester , Vermont . There it was announced to go off-line in the end of January 2011. Since January 2013, a mirror has been hosted by the University of Utah (no upload node). The German site
817-605: The CCAN, the Comprehensive C Archive Network. The CCAN is a direct port of the CPAN architecture for use with the C language . CRAN, the Comprehensive R Archive Network, is a set of mirrors hosting the R language distribution(s), documentation, and contributed extensions. CTAN CTAN (an acronym for " Comprehensive TeX Archive Network ") is the authoritative place where TeX related material and software can be found for download. Repositories for other projects, such as
860-454: The CPAN are referred to as distributions . A distribution may consist of one or more modules, documentation files, or programs packaged in a common archiving format, such as a gzipped tar archive or a ZIP file. Distributions will often contain installation scripts (usually called Makefile.PL or Build.PL ) and test scripts which can be run to verify the contents of the distribution are functioning properly. New distributions are uploaded to
903-472: The CPAN through the Perl Authors Upload Server (PAUSE). To do so, they must request a PAUSE account. Once registered, they may use a web interface at pause.perl.org , or an FTP 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 first-come permission to the uploader), or if
SECTION 20
#1732845424799946-511: The CPAN. The official search .cpan .org 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 burden. Users will be transitioned and redirected to the third-party alternative MetaCPAN. CPAN Testers are
989-470: The Perl interpreter when it is first compiled ; on Unix-like operating systems , common paths include /usr/lib/perl5 , /usr/local/lib/perl5 , and several of their subdirectories. Perl comes with a small set of core modules . Some of these perform bootstrapping tasks, such as ExtUtils::MakeMaker, which is used to create Makefiles for building and installing other extension modules; others, like List::Util, are merely commonly used. CPAN's main purpose
1032-521: The Perl Authors Upload Server, or PAUSE (see the section Uploading distributions with PAUSE ). In 2003, distributions started to include metadata files, called META. yml , 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
1075-504: The Perl developer community, the CPAN both shapes and is shaped by Perl's culture . Its "self-appointed master librarian", Jarkko Hietaniemi , often takes part in the April Fools' Day jokes; on 1 April 2002 the site was temporarily named to CJAN , where the "J" stood for "Java". In 2003, the www.cpan.org domain name was redirected to Matt's Script Archive , a site infamous in the Perl community for having badly written code. Some of
1118-413: The back-end work of downloading, compiling, and installing modules from the interactive shell used to issue commands. It supports several advanced features, such as cryptographic signature checking, test result reporting, and uninstalling a distribution. CPANPLUS was added to the Perl core in version 5.10.0, and removed from it in version 5.20.0. A smaller, leaner modern alternative to these CPAN installers
1161-453: The binary and decimal definitions used for "gigabyte" have ended in favour of the manufacturers, with courts holding that the legal definition of gigabyte or GB is 1 GB = 1,000,000,000 (10 ) bytes (the decimal definition). Specifically, the courts held that "the U.S. Congress has deemed the decimal definition of gigabyte to be the 'preferred' one for the purposes of 'U.S. trade and commerce' .... The California Legislature has likewise adopted
1204-873: The capacity of modern computer random-access memory devices, such as DIMM modules, is always a multiple of a power of 1024. It is thus convenient to use prefixes denoting powers of 1024, known as binary prefixes , in describing them. For example, a memory capacity of 1 073 741 824 bytes (1024 B) is conveniently expressed as 1 GiB rather than as 1.074 GB. The former specification is, however, often quoted as "1 GB" when applied to random-access memory. Software allocates memory in varying degrees of granularity as needed to fulfill data structure requirements and binary multiples are usually not required. Other computer capacities and rates, like storage hardware size, data transfer rates, clock speeds , operations per second , etc., do not depend on an inherent base , and are usually presented in decimal units. For example,
1247-460: The class designation. Practically all manufacturers of hard disk drives and flash-memory disk devices continue to define one gigabyte as 1 000 000 000 bytes , which is displayed on the packaging. Some operating systems such as Mac OS X and Ubuntu , and Debian express hard drive capacity or file size using decimal multipliers, while others such as Microsoft Windows report size using binary multipliers. This discrepancy causes confusion, as
1290-579: 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 META. json , with the YAML format file often also included for backward compatibility . 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 Apache::DBI or Lingua::EN::Inflect ) according to purpose or domain, though this
1333-499: The decimal kilobyte value is nearly 98% of the kibibyte, a megabyte is under 96% of a mebibyte, and a gigabyte is just over 93% of a gibibyte value. This means that a 300 GB (279 GiB) hard disk might be indicated variously as "300 GB", "279 GB" or "279 GiB", depending on the operating system. As storage sizes increase and larger units are used, these differences become more pronounced. A lawsuit decided in 2019 that arose from alleged breach of contract and other claims over
CPAN - Misplaced Pages Continue
1376-445: The decimal system for all 'transactions in this state'." Earlier lawsuits had ended in settlement with no court ruling on the question, such as a lawsuit against drive manufacturer Western Digital . Western Digital settled the challenge and added explicit disclaimers to products that the usable capacity may differ from the advertised capacity. Seagate was sued on similar grounds and also settled. Because of their physical design,
1419-482: The distributions on the CPAN are distributed as jokes. The Acme :: hierarchy is reserved for joke modules; for instance, Acme::Don't adds a don't function that doesn't run the code given to it (to complement the do built-in, which does). Even outside the Acme:: hierarchy, some modules are still written largely for amusement; one example is Lingua::Romana::Perligata , which can be used to write Perl programs in
1462-468: The first disk drive, the IBM 350 , disk drive manufacturers expressed hard drive capacities using decimal prefixes. With the advent of gigabyte-range drive capacities, manufacturers labelled many consumer hard drive , solid-state drive and USB flash drive capacities in certain size classes expressed in decimal gigabytes, such as "500 GB". The exact capacity of a given drive model is usually slightly larger than
1505-567: The gigabyte is GB . This definition is used in all contexts of science (especially data science ), engineering , business , and many areas of computing , including storage capacities of hard drives , solid-state drives , and tapes , as well as data transmission speeds. The term is also used in some fields of computer science and information technology to denote 1 073 741 824 (1024 or 2 ) bytes, however, particularly for sizes of RAM . Thus, some usage of gigabyte has been ambiguous. To resolve this difficulty, IEC 80000-13 clarifies that
1548-522: The gigabyte strictly denote 1000 bytes and gibibyte denote 1024 bytes. By the end of 2007, the IEC Standard had been adopted by the IEEE , EU , and NIST , and in 2009 it was incorporated in the International System of Quantities . Nevertheless, the term gigabyte continues to be widely used with the following two different meanings: Based on powers of 10, this definition uses the prefix giga- as defined in
1591-459: The main CTAN nodes serve downloads of more than 6 TB per month, not counting its 94 mirror sites worldwide. Gigabyte The gigabyte ( / ˈ ɡ ɪ ɡ ə b aɪ t , ˈ dʒ ɪ ɡ ə b aɪ t / ) is a multiple of the unit byte for digital information. The prefix giga means 10 in the International System of Units (SI). Therefore, one gigabyte is one billion bytes. The unit symbol for
1634-562: The makers of electronic storage devices must conform to Microsoft Windows' use of a binary definition of "GB" instead of the metric/decimal definition, the United States District Court for the Northern District of California rejected that argument, ruling that "the U.S. Congress has deemed the decimal definition of gigabyte to be the 'preferred' one for the purposes of 'U.S. trade and commerce. ' " The term gigabyte has
1677-432: 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. 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 cpan
1720-483: 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 Parrot and Raku . Files on
1763-422: 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 the expected set of core Perl modules to be available. It is also available from CPAN as the module App::cpanminus, which installs the cpanm script. It does not maintain or rely on
CPAN - Misplaced Pages Continue
1806-513: Was first at the University of Heidelberg , operated by Rainer; in 1999 it moved to the University of Mainz , also operated by Rainer; 2002 to the University of Hamburg , operated by Reinhard Zierke; finally in 2005 it moved to a commercial hosting company since the amount of traffic got too high to get sponsored by a university. The German site is subsidized by DANTE, the Deutschsprachige Anwendervereinigung TeX . Today,
1849-466: Was put together at the start of 1992 – Sebastian did the main work – and synchronized at the start of 1993. The TeX Users Group provided a framework, a Technical Working Group, for this task's organization. CTAN was officially announced at the EuroTeX conference at Aston University , 1993. The WEB server itself is maintained by Gerd Neugebauer. The English site has been stable since the beginning, but both
#798201