FreeBSD manual
download PDF document: cpan.1.pdf
CPAN(1) Perl Programmers Reference Guide CPAN(1)
NAME
cpan - easily interact with CPAN from the command line
SYNOPSIS
# with arguments and no switches, installs specified modules
cpan module_name [ module_name ... ]
# with switches, installs modules with extra behavior
cpan [-cfFimtTw] module_name [ module_name ... ]
# use local::lib
cpan -I module_name [ module_name ... ]
# one time mirror override for faster mirrors
cpan -p ...
# with just the dot, install from the distribution in the
# current directory
cpan .
# without arguments, starts CPAN.pm shell
cpan
# without arguments, but some switches
cpan [-ahpruvACDLOPX]
DESCRIPTION
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.
Options
-a Creates a CPAN.pm autobundle with CPAN::Shell->autobundle.
-A module [ module ... ]
Shows the primary maintainers for the specified modules.
-c module
Runs a `make clean` in the specified module's directories.
-C module [ module ... ]
Show the Changes files for the specified modules
-D module [ module ... ]
Show the module details. This prints one line for each out-of-date
module (meaning, modules locally installed but have newer versions
on CPAN). Each line has three columns: module name, local version,
and CPAN version.
-f Force the specified action, when it normally would have failed. Use
this to install a module even if its tests fail. When you use this
option, -i is not optional for installing a module when you need to
force it:
% cpan -f -i Module::Foo
Downloads to the current directory the latest distribution of the
module.
-G module [ module ... ]
UNIMPLEMENTED
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.
-h Print a help message and exit. When you specify "-h", it ignores
all of the other options and arguments.
-i module [ module ... ]
Install the specified modules. With no other switches, this switch
is implied.
-I Load "local::lib" (think like "-I" for loading lib paths). Too bad
"-l" was already taken.
-j Config.pm
Load the file that has the CPAN configuration data. This should
have the same format as the standard CPAN/Config.pm file, which
defines $CPAN::Config as an anonymous hash.
-J Dump the configuration in the same format that CPAN.pm uses. This
is useful for checking the configuration as well as using the dump
as a starting point for a new, custom configuration.
-l List all installed modules with their versions
-L author [ author ... ]
List the modules by the specified authors.
-m Make the specified modules.
-M mirror1,mirror2,...
A comma-separated list of mirrors to use for just this run. The
"-P" option can find them for you automatically.
-n Do a dry run, but don't actually install anything. (unimplemented)
-O Show the out-of-date modules.
-p Ping the configured mirrors and print a report
-P Find the best mirrors you could be using and use them for the
current session.
-r Recompiles dynamically loaded modules with CPAN::Shell->recompile.
-s Drop in the CPAN.pm shell. This command does this automatically if
you don't specify any arguments.
-t module [ module ... ]
Run a `make test` on the specified modules.
-V Print detailed information about the cpan client.
-w UNIMPLEMENTED
Turn on cpan warnings. This checks various things, like directory
permissions, and tells you about problems you might have.
-x module [ module ... ]
Find close matches to the named modules that you think you might
have mistyped. This requires the optional installation of
Text::Levenshtein or Text::Levenshtein::Damerau.
-X Dump all the namespaces to standard output.
Examples
# 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
# install modules but without testing them
cpan -Ti CGI::Minimal URI
Environment variables
There are several components in CPAN.pm that use environment variables.
The build tools, ExtUtils::MakeMaker and Module::Build use some, while
others matter to the levels above them. Some of these are specified by
the Perl Toolchain Gang:
Lancaster Consensus:
<https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/lancaster-consensus.md>
Oslo Consensus:
<https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/oslo-consensus.md>
NONINTERACTIVE_TESTING
Assume no one is paying attention and skips prompts for
distributions that do that correctly. cpan(1) sets this to 1 unless
it already has a value (even if that value is false).
PERL_MM_USE_DEFAULT
Use the default answer for a prompted questions. cpan(1) sets this
The log level to use, with either the embedded, minimal logger or
Log::Log4perl if it is installed. Possible values are the same as
the "Log::Log4perl" levels: "TRACE", "DEBUG", "INFO", "WARN",
"ERROR", and "FATAL". The default is "INFO".
GIT_COMMAND
The path to the "git" binary to use for the Git features. The
default is "/usr/local/bin/git".
EXIT VALUES
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
TO DO
* one shot configuration values from the command line
BUGS
* none noted
SEE ALSO
Most behaviour, including environment variables and configuration,
comes directly from CPAN.pm.
SOURCE AVAILABILITY
This code is in Github in the CPAN.pm repository:
https://github.com/andk/cpanpm
The source used to be tracked separately in another GitHub repo, but
the canonical source is now in the above repo.
CREDITS
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
AUTHOR
brian d foy, "<bdfoy@cpan.org>"
COPYRIGHT
Copyright (c) 2001-2015, brian d foy, All Rights Reserved.
You may redistribute this under the same terms as Perl itself.
perl v5.36.3 2024-12-22 CPAN(1)