# with arguments and no switches, installs specified modules cpan module_name [ module_name ... ] # with switches, installs modules with extra behavior cpan [-cfgimtTw] module_name [ module_name ... ] # with just the dot, install from the distribution in the # current directory cpan . # without arguments, starts CPAN.pm shell cpan # force install modules (usually those that fail tests) cpan -f module_name [ module_name ... ] # install modules but without testing them cpan -T module_name [ module_name ... ] # dump the configuration cpan -J # load a different configuration to install Module::Foo cpan -j some/other/file Module::Foo # without arguments, but some switches cpan [-ahrvACDlLO]
This script provides a command interface (not a shell) to CPAN. At the moment it uses CPAN.pm to do the work, but it is not a one-shot command runner for CPAN.pm.
% cpan -f -i Module::Foo
Download to the current directory the latest distribution of the modules, unpack each distribution, and create a git repository for each distribution.
If you want this feature, check out Yanick Champoux's "Git::CPAN::Patch" distribution.
Turn on cpan warnings. This checks various things, like directory permissions, and tells you about problems you might have.
# print a help message cpan -h # print the version numbers cpan -v # create an autobundle cpan -a # recompile modules cpan -r # upgrade all installed modules cpan -u # install modules ( sole -i is optional ) cpan -i Netscape::Booksmarks Business::ISBN # force install modules ( must use -i ) cpan -fi CGI::Minimal URI
Lancaster Concensus: <https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/lancaster-consensus.md>
Oslo Concensus: <https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/oslo-consensus.md>
The script exits with zero if it thinks that everything worked, or a positive number if it thinks that something failed. Note, however, that in some cases it has to divine a failure by the output of things it does not control. For now, the exit codes are vague:
1 An unknown error 2 The was an external problem 4 There was an internal problem with the script 8 A module failed to install
* one shot configuration values from the command line
* none noted
Most behaviour, including environment variables and configuration, comes directly from CPAN.pm.
This code is in Github in the CPAN.pm repository:
The source used to be tracked separately in another GitHub repo, but the canonical source is now in the above repo.
Japheth Cleaver added the bits to allow a forced install (-f).
Jim Brandt suggest and provided the initial implementation for the up-to-date and Changes features.
Adam Kennedy pointed out that exit() causes problems on Windows where this script ends up with a .bat extension
brian d foy, "<email@example.com>"
Copyright (c) 2001-2014, brian d foy, All Rights Reserved.
You may redistribute this under the same terms as Perl itself.