1App::Cpan(3pm) Perl Programmers Reference Guide App::Cpan(3pm)
2
3
4
6 App::Cpan - easily interact with CPAN from the command line
7
9 # with arguments and no switches, installs specified modules
10 cpan module_name [ module_name ... ]
11
12 # with switches, installs modules with extra behavior
13 cpan [-cfFimt] module_name [ module_name ... ]
14
15 # use local::lib
16 cpan -l module_name [ module_name ... ]
17
18 # with just the dot, install from the distribution in the
19 # current directory
20 cpan .
21
22 # without arguments, starts CPAN.pm shell
23 cpan
24
25 # without arguments, but some switches
26 cpan [-ahruvACDLO]
27
29 This script provides a command interface (not a shell) to CPAN. At the
30 moment it uses CPAN.pm to do the work, but it is not a one-shot command
31 runner for CPAN.pm.
32
33 Options
34 -a Creates a CPAN.pm autobundle with CPAN::Shell->autobundle.
35
36 -A module [ module ... ]
37 Shows the primary maintainers for the specified modules.
38
39 -c module
40 Runs a `make clean` in the specified module's directories.
41
42 -C module [ module ... ]
43 Show the Changes files for the specified modules
44
45 -D module [ module ... ]
46 Show the module details. This prints one line for each out-of-date
47 module (meaning, modules locally installed but have newer versions
48 on CPAN). Each line has three columns: module name, local version,
49 and CPAN version.
50
51 -f Force the specified action, when it normally would have failed. Use
52 this to install a module even if its tests fail. When you use this
53 option, -i is not optional for installing a module when you need to
54 force it:
55
56 % cpan -f -i Module::Foo
57
58 -F Turn off CPAN.pm's attempts to lock anything. You should be careful
59 with this since you might end up with multiple scripts trying to
60 muck in the same directory. This isn't so much of a concern if
61 you're loading a special config with "-j", and that config sets up
62 its own work directories.
63
64 -g module [ module ... ]
65 Downloads to the current directory the latest distribution of the
66 module.
67
68 -G module [ module ... ]
69 UNIMPLEMENTED
70
71 Download to the current directory the latest distribution of the
72 modules, unpack each distribution, and create a git repository for
73 each distribution.
74
75 If you want this feature, check out Yanick Champoux's
76 "Git::CPAN::Patch" distribution.
77
78 -h Print a help message and exit. When you specify "-h", it ignores
79 all of the other options and arguments.
80
81 -i Install the specified modules.
82
83 -j Config.pm
84 Load the file that has the CPAN configuration data. This should
85 have the same format as the standard CPAN/Config.pm file, which
86 defines $CPAN::Config as an anonymous hash.
87
88 -J Dump the configuration in the same format that CPAN.pm uses. This
89 is useful for checking the configuration as well as using the dump
90 as a starting point for a new, custom configuration.
91
92 -l Use "local::lib".
93
94 -L author [ author ... ]
95 List the modules by the specified authors.
96
97 -m Make the specified modules.
98
99 -O Show the out-of-date modules.
100
101 -t Run a `make test` on the specified modules.
102
103 -r Recompiles dynamically loaded modules with CPAN::Shell->recompile.
104
105 -u Upgrade all installed modules. Blindly doing this can really break
106 things, so keep a backup.
107
108 -v Print the script version and CPAN.pm version then exit.
109
110 Examples
111 # print a help message
112 cpan -h
113
114 # print the version numbers
115 cpan -v
116
117 # create an autobundle
118 cpan -a
119
120 # recompile modules
121 cpan -r
122
123 # upgrade all installed modules
124 cpan -u
125
126 # install modules ( sole -i is optional )
127 cpan -i Netscape::Booksmarks Business::ISBN
128
129 # force install modules ( must use -i )
130 cpan -fi CGI::Minimal URI
131
132 Methods
133 run()
134 Just do it.
135
136 The "run" method returns 0 on success and a postive number on
137 failure. See the section on EXIT CODES for details on the values.
138
139 CPAN.pm sends all the good stuff either to STDOUT. I have to
140 intercept that output so I can find out what happened.
141
143 The script exits with zero if it thinks that everything worked, or a
144 positive number if it thinks that something failed. Note, however, that
145 in some cases it has to divine a failure by the output of things it
146 does not control. For now, the exit codes are vague:
147
148 1 An unknown error
149
150 2 The was an external problem
151
152 4 There was an internal problem with the script
153
154 8 A module failed to install
155
157 * There is initial support for Log4perl if it is available, but I
158 haven't gone through everything to make the NullLogger work out
159 correctly if Log4perl is not installed.
160
161 * When I capture CPAN.pm output, I need to check for errors and report
162 them to the user.
163
165 * none noted
166
168 Most behaviour, including environment variables and configuration,
169 comes directly from CPAN.pm.
170
172 This code is in Github:
173
174 git://github.com/briandfoy/cpan_script.git
175
177 Japheth Cleaver added the bits to allow a forced install (-f).
178
179 Jim Brandt suggest and provided the initial implementation for the up-
180 to-date and Changes features.
181
182 Adam Kennedy pointed out that exit() causes problems on Windows where
183 this script ends up with a .bat extension
184
186 brian d foy, "<bdfoy@cpan.org>"
187
189 Copyright (c) 2001-2009, brian d foy, All Rights Reserved.
190
191 You may redistribute this under the same terms as Perl itself.
192
193
194
195perl v5.12.4 2011-06-01 App::Cpan(3pm)