Current File : //opt/RZperl518/man/man3/App::Cpan.3 |
.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{
. if \nF \{
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
.if n \{\
. ds #H 0
. ds #V .8m
. ds #F .3m
. ds #[ \f1
. ds #] \fP
.\}
.if t \{\
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. ds #V .6m
. ds #F 0
. ds #[ \&
. ds #] \&
.\}
. \" simple accents for nroff and troff
.if n \{\
. ds ' \&
. ds ` \&
. ds ^ \&
. ds , \&
. ds ~ ~
. ds /
.\}
.if t \{\
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
. ds : e
. ds 8 ss
. ds o a
. ds d- d\h'-1'\(ga
. ds D- D\h'-1'\(hy
. ds th \o'bp'
. ds Th \o'LP'
. ds ae ae
. ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "App::Cpan 3"
.TH App::Cpan 3 "2014-10-01" "perl v5.18.4" "Perl Programmers Reference Guide"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
App::Cpan \- easily interact with CPAN from the command line
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 2
\& # 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 ... ]
\&
\& # 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 [\-ahpruvACDLOP]
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
This script provides a command interface (not a shell) to \s-1CPAN.\s0 At the
moment it uses \s-1CPAN\s0.pm to do the work, but it is not a one-shot command
runner for \s-1CPAN\s0.pm.
.SS "Options"
.IX Subsection "Options"
.IP "\-a" 4
.IX Item "-a"
Creates a \s-1CPAN\s0.pm autobundle with CPAN::Shell\->autobundle.
.IP "\-A module [ module ... ]" 4
.IX Item "-A module [ module ... ]"
Shows the primary maintainers for the specified modules.
.IP "\-c module" 4
.IX Item "-c module"
Runs a `make clean` in the specified module's directories.
.IP "\-C module [ module ... ]" 4
.IX Item "-C module [ module ... ]"
Show the \fIChanges\fR files for the specified modules
.IP "\-D module [ module ... ]" 4
.IX Item "-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 \s-1CPAN\s0).
Each line has three columns: module name, local version, and \s-1CPAN\s0
version.
.IP "\-f" 4
.IX Item "-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:
.Sp
.Vb 1
\& % cpan \-f \-i Module::Foo
.Ve
.IP "\-F" 4
.IX Item "-F"
Turn off \s-1CPAN\s0.pm's attempts to lock anything. You should be careful with
this since you might end up with multiple scripts trying to muck in the
same directory. This isn't so much of a concern if you're loading a special
config with \f(CW\*(C`\-j\*(C'\fR, and that config sets up its own work directories.
.IP "\-g module [ module ... ]" 4
.IX Item "-g module [ module ... ]"
Downloads to the current directory the latest distribution of the module.
.IP "\-G module [ module ... ]" 4
.IX Item "-G module [ module ... ]"
\&\s-1UNIMPLEMENTED\s0
.Sp
Download to the current directory the latest distribution of the
modules, unpack each distribution, and create a git repository for each
distribution.
.Sp
If you want this feature, check out Yanick Champoux's \f(CW\*(C`Git::CPAN::Patch\*(C'\fR
distribution.
.IP "\-h" 4
.IX Item "-h"
Print a help message and exit. When you specify \f(CW\*(C`\-h\*(C'\fR, it ignores all
of the other options and arguments.
.IP "\-i" 4
.IX Item "-i"
Install the specified modules. With no other switches, this switch
is implied.
.IP "\-I" 4
.IX Item "-I"
Load \f(CW\*(C`local::lib\*(C'\fR (think like \f(CW\*(C`\-I\*(C'\fR for loading lib paths). Too bad
\&\f(CW\*(C`\-l\*(C'\fR was already taken.
.IP "\-j Config.pm" 4
.IX Item "-j Config.pm"
Load the file that has the \s-1CPAN\s0 configuration data. This should have the
same format as the standard \fICPAN/Config.pm\fR file, which defines
\&\f(CW$CPAN::Config\fR as an anonymous hash.
.IP "\-J" 4
.IX Item "-J"
Dump the configuration in the same format that \s-1CPAN\s0.pm uses. This is useful
for checking the configuration as well as using the dump as a starting point
for a new, custom configuration.
.IP "\-l" 4
.IX Item "-l"
List all installed modules wth their versions
.IP "\-L author [ author ... ]" 4
.IX Item "-L author [ author ... ]"
List the modules by the specified authors.
.IP "\-m" 4
.IX Item "-m"
Make the specified modules.
.IP "\-n" 4
.IX Item "-n"
Do a dry run, but don't actually install anything. (unimplemented)
.IP "\-O" 4
.IX Item "-O"
Show the out-of-date modules.
.IP "\-p" 4
.IX Item "-p"
Ping the configured mirrors
.IP "\-P" 4
.IX Item "-P"
Find the best mirrors you could be using (but doesn't configure them just yet)
.IP "\-r" 4
.IX Item "-r"
Recompiles dynamically loaded modules with CPAN::Shell\->recompile.
.IP "\-t" 4
.IX Item "-t"
Run a `make test` on the specified modules.
.IP "\-T" 4
.IX Item "-T"
Do not test modules. Simply install them.
.IP "\-u" 4
.IX Item "-u"
Upgrade all installed modules. Blindly doing this can really break things,
so keep a backup.
.IP "\-v" 4
.IX Item "-v"
Print the script version and \s-1CPAN\s0.pm version then exit.
.IP "\-V" 4
.IX Item "-V"
Print detailed information about the cpan client.
.IP "\-w" 4
.IX Item "-w"
\&\s-1UNIMPLEMENTED\s0
.Sp
Turn on cpan warnings. This checks various things, like directory permissions,
and tells you about problems you might have.
.SS "Examples"
.IX Subsection "Examples"
.Vb 2
\& # 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
.Ve
.SS "Methods"
.IX Subsection "Methods"
.IP "\fIrun()\fR" 4
.IX Item "run()"
Just do it.
.Sp
The \f(CW\*(C`run\*(C'\fR method returns 0 on success and a postive number on
failure. See the section on \s-1EXIT CODES\s0 for details on the values.
.Sp
\&\s-1CPAN\s0.pm sends all the good stuff either to \s-1STDOUT,\s0 or to a temp
file if \f(CW$CPAN::Be_Silent\fR is set. I have to intercept that output
so I can find out what happened.
.Sp
Stolen from File::Path::Expand
.SH "EXIT VALUES"
.IX Header "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:
.PP
.Vb 1
\& 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
.Ve
.SH "TO DO"
.IX Header "TO DO"
* There is initial support for Log4perl if it is available, but I
haven't gone through everything to make the NullLogger work out
correctly if Log4perl is not installed.
.PP
* When I capture \s-1CPAN\s0.pm output, I need to check for errors and
report them to the user.
.PP
* Support local::lib
.PP
* Warnings switch
.PP
* Check then exit
.PP
* ping mirrors support
.PP
* no test option
.SH "BUGS"
.IX Header "BUGS"
* none noted
.SH "SEE ALSO"
.IX Header "SEE ALSO"
Most behaviour, including environment variables and configuration,
comes directly from \s-1CPAN\s0.pm.
.SH "SOURCE AVAILABILITY"
.IX Header "SOURCE AVAILABILITY"
This code is in Github:
.PP
.Vb 1
\& git://github.com/briandfoy/cpan_script.git
.Ve
.SH "CREDITS"
.IX Header "CREDITS"
Japheth Cleaver added the bits to allow a forced install (\f(CW\*(C`\-f\*(C'\fR).
.PP
Jim Brandt suggest and provided the initial implementation for the
up-to-date and Changes features.
.PP
Adam Kennedy pointed out that \f(CW\*(C`exit()\*(C'\fR causes problems on Windows
where this script ends up with a .bat extension
.PP
David Golden helps integrate this into the \f(CW\*(C`CPAN.pm\*(C'\fR repos.
.SH "AUTHOR"
.IX Header "AUTHOR"
brian d foy, \f(CW\*(C`<bdfoy@cpan.org>\*(C'\fR
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (c) 2001\-2013, brian d foy, All Rights Reserved.
.PP
You may redistribute this under the same terms as Perl itself.