1CPAN(3)               User Contributed Perl Documentation              CPAN(3)
2
3
4

NAME

6       CPAN - query, download and build perl modules from CPAN sites
7

SYNOPSIS

9       Interactive mode:
10
11         perl -MCPAN -e shell
12
13       --or--
14
15         cpan
16
17       Basic commands:
18
19         # Modules:
20
21         cpan> install Acme::Meta                       # in the shell
22
23         CPAN::Shell->install("Acme::Meta");            # in perl
24
25         # Distributions:
26
27         cpan> install NWCLARK/Acme-Meta-0.02.tar.gz    # in the shell
28
29         CPAN::Shell->
30           install("NWCLARK/Acme-Meta-0.02.tar.gz");    # in perl
31
32         # module objects:
33
34         $mo = CPAN::Shell->expandany($mod);
35         $mo = CPAN::Shell->expand("Module",$mod);      # same thing
36
37         # distribution objects:
38
39         $do = CPAN::Shell->expand("Module",$mod)->distribution;
40         $do = CPAN::Shell->expandany($distro);         # same thing
41         $do = CPAN::Shell->expand("Distribution",
42                                   $distro);            # same thing
43

DESCRIPTION

45       The CPAN module automates or at least simplifies the make and install
46       of perl modules and extensions. It includes some primitive searching
47       capabilities and knows how to use LWP, HTTP::Tiny, Net::FTP and certain
48       external download clients to fetch distributions from the net.
49
50       These are fetched from one or more mirrored CPAN (Comprehensive Perl
51       Archive Network) sites and unpacked in a dedicated directory.
52
53       The CPAN module also supports named and versioned bundles of modules.
54       Bundles simplify handling of sets of related modules. See Bundles
55       below.
56
57       The package contains a session manager and a cache manager. The session
58       manager keeps track of what has been fetched, built, and installed in
59       the current session. The cache manager keeps track of the disk space
60       occupied by the make processes and deletes excess space using a simple
61       FIFO mechanism.
62
63       All methods provided are accessible in a programmer style and in an
64       interactive shell style.
65
66   CPAN::shell([$prompt, $command]) Starting Interactive Mode
67       Enter interactive mode by running
68
69           perl -MCPAN -e shell
70
71       or
72
73           cpan
74
75       which puts you into a readline interface. If "Term::ReadKey" and either
76       of "Term::ReadLine::Perl" or "Term::ReadLine::Gnu" are installed,
77       history and command completion are supported.
78
79       Once at the command line, type "h" for one-page help screen; the rest
80       should be self-explanatory.
81
82       The function call "shell" takes two optional arguments: one the prompt,
83       the second the default initial command line (the latter only works if a
84       real ReadLine interface module is installed).
85
86       The most common uses of the interactive modes are
87
88       Searching for authors, bundles, distribution files and modules
89         There are corresponding one-letter commands "a", "b", "d", and "m"
90         for each of the four categories and another, "i" for any of the
91         mentioned four. Each of the four entities is implemented as a class
92         with slightly differing methods for displaying an object.
93
94         Arguments to these commands are either strings exactly matching the
95         identification string of an object, or regular expressions matched
96         case-insensitively against various attributes of the objects. The
97         parser only recognizes a regular expression when you enclose it with
98         slashes.
99
100         The principle is that the number of objects found influences how an
101         item is displayed. If the search finds one item, the result is
102         displayed with the rather verbose method "as_string", but if more
103         than one is found, each object is displayed with the terse method
104         "as_glimpse".
105
106         Examples:
107
108           cpan> m Acme::MetaSyntactic
109           Module id = Acme::MetaSyntactic
110               CPAN_USERID  BOOK (Philippe Bruhat (BooK) <[...]>)
111               CPAN_VERSION 0.99
112               CPAN_FILE    B/BO/BOOK/Acme-MetaSyntactic-0.99.tar.gz
113               UPLOAD_DATE  2006-11-06
114               MANPAGE      Acme::MetaSyntactic - Themed metasyntactic variables names
115               INST_FILE    /usr/local/lib/perl/5.10.0/Acme/MetaSyntactic.pm
116               INST_VERSION 0.99
117           cpan> a BOOK
118           Author id = BOOK
119               EMAIL        [...]
120               FULLNAME     Philippe Bruhat (BooK)
121           cpan> d BOOK/Acme-MetaSyntactic-0.99.tar.gz
122           Distribution id = B/BO/BOOK/Acme-MetaSyntactic-0.99.tar.gz
123               CPAN_USERID  BOOK (Philippe Bruhat (BooK) <[...]>)
124               CONTAINSMODS Acme::MetaSyntactic Acme::MetaSyntactic::Alias [...]
125               UPLOAD_DATE  2006-11-06
126           cpan> m /lorem/
127           Module  = Acme::MetaSyntactic::loremipsum (BOOK/Acme-MetaSyntactic-0.99.tar.gz)
128           Module    Text::Lorem            (ADEOLA/Text-Lorem-0.3.tar.gz)
129           Module    Text::Lorem::More      (RKRIMEN/Text-Lorem-More-0.12.tar.gz)
130           Module    Text::Lorem::More::Source (RKRIMEN/Text-Lorem-More-0.12.tar.gz)
131           cpan> i /berlin/
132           Distribution    BEATNIK/Filter-NumberLines-0.02.tar.gz
133           Module  = DateTime::TimeZone::Europe::Berlin (DROLSKY/DateTime-TimeZone-0.7904.tar.gz)
134           Module    Filter::NumberLines    (BEATNIK/Filter-NumberLines-0.02.tar.gz)
135           Author          [...]
136
137         The examples illustrate several aspects: the first three queries
138         target modules, authors, or distros directly and yield exactly one
139         result. The last two use regular expressions and yield several
140         results. The last one targets all of bundles, modules, authors, and
141         distros simultaneously. When more than one result is available, they
142         are printed in one-line format.
143
144       "get", "make", "test", "install", "clean" modules or distributions
145         These commands take any number of arguments and investigate what is
146         necessary to perform the action. Argument processing is as follows:
147
148           known module name in format Foo/Bar.pm   module
149           other embedded slash                     distribution
150             - with trailing slash dot              directory
151           enclosing slashes                        regexp
152           known module name in format Foo::Bar     module
153
154         If the argument is a distribution file name (recognized by embedded
155         slashes), it is processed. If it is a module, CPAN determines the
156         distribution file in which this module is included and processes
157         that, following any dependencies named in the module's META.yml or
158         Makefile.PL (this behavior is controlled by the configuration
159         parameter "prerequisites_policy"). If an argument is enclosed in
160         slashes it is treated as a regular expression: it is expanded and if
161         the result is a single object (distribution, bundle or module), this
162         object is processed.
163
164         Example:
165
166             install Dummy::Perl                   # installs the module
167             install AUXXX/Dummy-Perl-3.14.tar.gz  # installs that distribution
168             install /Dummy-Perl-3.14/             # same if the regexp is unambiguous
169
170         "get" downloads a distribution file and untars or unzips it, "make"
171         builds it, "test" runs the test suite, and "install" installs it.
172
173         Any "make" or "test" is run unconditionally. An
174
175           install <distribution_file>
176
177         is also run unconditionally. But for
178
179           install <module>
180
181         CPAN checks whether an install is needed and prints module up to date
182         if the distribution file containing the module doesn't need updating.
183
184         CPAN also keeps track of what it has done within the current session
185         and doesn't try to build a package a second time regardless of
186         whether it succeeded or not. It does not repeat a test run if the
187         test has been run successfully before. Same for install runs.
188
189         The "force" pragma may precede another command (currently: "get",
190         "make", "test", or "install") to execute the command from scratch and
191         attempt to continue past certain errors. See the section below on the
192         "force" and the "fforce" pragma.
193
194         The "notest" pragma skips the test part in the build process.
195
196         Example:
197
198             cpan> notest install Tk
199
200         A "clean" command results in a
201
202           make clean
203
204         being executed within the distribution file's working directory.
205
206       "readme", "perldoc", "look" module or distribution
207         "readme" displays the README file of the associated distribution.
208         "Look" gets and untars (if not yet done) the distribution file,
209         changes to the appropriate directory and opens a subshell process in
210         that directory. "perldoc" displays the module's pod documentation in
211         html or plain text format.
212
213       "ls" author
214       "ls" globbing_expression
215         The first form lists all distribution files in and below an author's
216         CPAN directory as stored in the CHECKSUMS files distributed on CPAN.
217         The listing recurses into subdirectories.
218
219         The second form limits or expands the output with shell globbing as
220         in the following examples:
221
222               ls JV/make*
223               ls GSAR/*make*
224               ls */*make*
225
226         The last example is very slow and outputs extra progress indicators
227         that break the alignment of the result.
228
229         Note that globbing only lists directories explicitly asked for, for
230         example FOO/* will not list FOO/bar/Acme-Sthg-n.nn.tar.gz. This may
231         be regarded as a bug that may be changed in some future version.
232
233       "failed"
234         The "failed" command reports all distributions that failed on one of
235         "make", "test" or "install" for some reason in the currently running
236         shell session.
237
238       Persistence between sessions
239         If the "YAML" or the "YAML::Syck" module is installed a record of the
240         internal state of all modules is written to disk after each step.
241         The files contain a signature of the currently running perl version
242         for later perusal.
243
244         If the configurations variable "build_dir_reuse" is set to a true
245         value, then CPAN.pm reads the collected YAML files. If the stored
246         signature matches the currently running perl, the stored state is
247         loaded into memory such that persistence between sessions is
248         effectively established.
249
250       The "force" and the "fforce" pragma
251         To speed things up in complex installation scenarios, CPAN.pm keeps
252         track of what it has already done and refuses to do some things a
253         second time. A "get", a "make", and an "install" are not repeated.  A
254         "test" is repeated only if the previous test was unsuccessful. The
255         diagnostic message when CPAN.pm refuses to do something a second time
256         is one of Has already been "unwrapped|made|tested successfully" or
257         something similar. Another situation where CPAN refuses to act is an
258         "install" if the corresponding "test" was not successful.
259
260         In all these cases, the user can override this stubborn behaviour by
261         prepending the command with the word force, for example:
262
263           cpan> force get Foo
264           cpan> force make AUTHOR/Bar-3.14.tar.gz
265           cpan> force test Baz
266           cpan> force install Acme::Meta
267
268         Each forced command is executed with the corresponding part of its
269         memory erased.
270
271         The "fforce" pragma is a variant that emulates a "force get" which
272         erases the entire memory followed by the action specified,
273         effectively restarting the whole get/make/test/install procedure from
274         scratch.
275
276       Lockfile
277         Interactive sessions maintain a lockfile, by default "~/.cpan/.lock".
278         Batch jobs can run without a lockfile and not disturb each other.
279
280         The shell offers to run in downgraded mode when another process is
281         holding the lockfile. This is an experimental feature that is not yet
282         tested very well. This second shell then does not write the history
283         file, does not use the metadata file, and has a different prompt.
284
285       Signals
286         CPAN.pm installs signal handlers for SIGINT and SIGTERM. While you
287         are in the cpan-shell, it is intended that you can press "^C" anytime
288         and return to the cpan-shell prompt. A SIGTERM will cause the cpan-
289         shell to clean up and leave the shell loop. You can emulate the
290         effect of a SIGTERM by sending two consecutive SIGINTs, which usually
291         means by pressing "^C" twice.
292
293         CPAN.pm ignores SIGPIPE. If the user sets "inactivity_timeout", a
294         SIGALRM is used during the run of the "perl Makefile.PL" or "perl
295         Build.PL" subprocess. A SIGALRM is also used during module version
296         parsing, and is controlled by "version_timeout".
297
298   CPAN::Shell
299       The commands available in the shell interface are methods in the
300       package CPAN::Shell. If you enter the shell command, your input is
301       split by the Text::ParseWords::shellwords() routine, which acts like
302       most shells do. The first word is interpreted as the method to be
303       invoked, and the rest of the words are treated as the method's
304       arguments.  Continuation lines are supported by ending a line with a
305       literal backslash.
306
307   autobundle
308       "autobundle" writes a bundle file into the
309       "$CPAN::Config->{cpan_home}/Bundle" directory. The file contains a list
310       of all modules that are both available from CPAN and currently
311       installed within @INC. Duplicates of each distribution are suppressed.
312       The name of the bundle file is based on the current date and a counter,
313       e.g. Bundle/Snapshot_2012_05_21_00.pm. This is installed again by
314       running "cpan Bundle::Snapshot_2012_05_21_00", or installing
315       "Bundle::Snapshot_2012_05_21_00" from the CPAN shell.
316
317       Return value: path to the written file.
318
319   hosts
320       Note: this feature is still in alpha state and may change in future
321       versions of CPAN.pm
322
323       This commands provides a statistical overview over recent download
324       activities. The data for this is collected in the YAML file
325       "FTPstats.yml" in your "cpan_home" directory. If no YAML module is
326       configured or YAML not installed, no stats are provided.
327
328       install_tested
329           Install all distributions that have been tested successfully but
330           have not yet been installed. See also "is_tested".
331
332       is_tested
333           List all build directories of distributions that have been tested
334           successfully but have not yet been installed. See also
335           "install_tested".
336
337   mkmyconfig
338       mkmyconfig() writes your own CPAN::MyConfig file into your "~/.cpan/"
339       directory so that you can save your own preferences instead of the
340       system-wide ones.
341
342   r [Module|/Regexp/]...
343       scans current perl installation for modules that have a newer version
344       available on CPAN and provides a list of them. If called without
345       argument, all potential upgrades are listed; if called with arguments
346       the list is filtered to the modules and regexps given as arguments.
347
348       The listing looks something like this:
349
350         Package namespace         installed    latest  in CPAN file
351         CPAN                        1.94_64    1.9600  ANDK/CPAN-1.9600.tar.gz
352         CPAN::Reporter               1.1801    1.1902  DAGOLDEN/CPAN-Reporter-1.1902.tar.gz
353         YAML                           0.70      0.73  INGY/YAML-0.73.tar.gz
354         YAML::Syck                     1.14      1.17  AVAR/YAML-Syck-1.17.tar.gz
355         YAML::Tiny                     1.44      1.50  ADAMK/YAML-Tiny-1.50.tar.gz
356         CGI                            3.43      3.55  MARKSTOS/CGI.pm-3.55.tar.gz
357         Module::Build::YAML            1.40      1.41  DAGOLDEN/Module-Build-0.3800.tar.gz
358         TAP::Parser::Result::YAML      3.22      3.23  ANDYA/Test-Harness-3.23.tar.gz
359         YAML::XS                       0.34      0.35  INGY/YAML-LibYAML-0.35.tar.gz
360
361       It suppresses duplicates in the column "in CPAN file" such that
362       distributions with many upgradeable modules are listed only once.
363
364       Note that the list is not sorted.
365
366   recent ***EXPERIMENTAL COMMAND***
367       The "recent" command downloads a list of recent uploads to CPAN and
368       displays them slowly. While the command is running, a $SIG{INT} exits
369       the loop after displaying the current item.
370
371       Note: This command requires XML::LibXML installed.
372
373       Note: This whole command currently is just a hack and will probably
374       change in future versions of CPAN.pm, but the general approach will
375       likely remain.
376
377       Note: See also smoke
378
379   recompile
380       recompile() is a special command that takes no argument and runs the
381       make/test/install cycle with brute force over all installed dynamically
382       loadable extensions (a.k.a. XS modules) with 'force' in effect. The
383       primary purpose of this command is to finish a network installation.
384       Imagine you have a common source tree for two different architectures.
385       You decide to do a completely independent fresh installation. You start
386       on one architecture with the help of a Bundle file produced earlier.
387       CPAN installs the whole Bundle for you, but when you try to repeat the
388       job on the second architecture, CPAN responds with a "Foo up to date"
389       message for all modules. So you invoke CPAN's recompile on the second
390       architecture and you're done.
391
392       Another popular use for "recompile" is to act as a rescue in case your
393       perl breaks binary compatibility. If one of the modules that CPAN uses
394       is in turn depending on binary compatibility (so you cannot run CPAN
395       commands), then you should try the CPAN::Nox module for recovery.
396
397   report Bundle|Distribution|Module
398       The "report" command temporarily turns on the "test_report" config
399       variable, then runs the "force test" command with the given arguments.
400       The "force" pragma reruns the tests and repeats every step that might
401       have failed before.
402
403   smoke ***EXPERIMENTAL COMMAND***
404       *** WARNING: this command downloads and executes software from CPAN to
405       your computer of completely unknown status. You should never do this
406       with your normal account and better have a dedicated well separated and
407       secured machine to do this. ***
408
409       The "smoke" command takes the list of recent uploads to CPAN as
410       provided by the "recent" command and tests them all. While the command
411       is running $SIG{INT} is defined to mean that the current item shall be
412       skipped.
413
414       Note: This whole command currently is just a hack and will probably
415       change in future versions of CPAN.pm, but the general approach will
416       likely remain.
417
418       Note: See also recent
419
420   upgrade [Module|/Regexp/]...
421       The "upgrade" command first runs an "r" command with the given
422       arguments and then installs the newest versions of all modules that
423       were listed by that.
424
425   The four "CPAN::*" Classes: Author, Bundle, Module, Distribution
426       Although it may be considered internal, the class hierarchy does matter
427       for both users and programmer. CPAN.pm deals with the four classes
428       mentioned above, and those classes all share a set of methods.
429       Classical single polymorphism is in effect. A metaclass object
430       registers all objects of all kinds and indexes them with a string. The
431       strings referencing objects have a separated namespace (well, not
432       completely separated):
433
434                Namespace                         Class
435
436          words containing a "/" (slash)      Distribution
437           words starting with Bundle::          Bundle
438                 everything else            Module or Author
439
440       Modules know their associated Distribution objects. They always refer
441       to the most recent official release. Developers may mark their releases
442       as unstable development versions (by inserting an underscore into the
443       module version number which will also be reflected in the distribution
444       name when you run 'make dist'), so the really hottest and newest
445       distribution is not always the default.  If a module Foo circulates on
446       CPAN in both version 1.23 and 1.23_90, CPAN.pm offers a convenient way
447       to install version 1.23 by saying
448
449           install Foo
450
451       This would install the complete distribution file (say
452       BAR/Foo-1.23.tar.gz) with all accompanying material. But if you would
453       like to install version 1.23_90, you need to know where the
454       distribution file resides on CPAN relative to the authors/id/
455       directory. If the author is BAR, this might be BAR/Foo-1.23_90.tar.gz;
456       so you would have to say
457
458           install BAR/Foo-1.23_90.tar.gz
459
460       The first example will be driven by an object of the class
461       CPAN::Module, the second by an object of class CPAN::Distribution.
462
463   Integrating local directories
464       Note: this feature is still in alpha state and may change in future
465       versions of CPAN.pm
466
467       Distribution objects are normally distributions from the CPAN, but
468       there is a slightly degenerate case for Distribution objects, too, of
469       projects held on the local disk. These distribution objects have the
470       same name as the local directory and end with a dot. A dot by itself is
471       also allowed for the current directory at the time CPAN.pm was used.
472       All actions such as "make", "test", and "install" are applied directly
473       to that directory. This gives the command "cpan ." an interesting
474       touch: while the normal mantra of installing a CPAN module without
475       CPAN.pm is one of
476
477           perl Makefile.PL                 perl Build.PL
478                  ( go and get prerequisites )
479           make                             ./Build
480           make test                        ./Build test
481           make install                     ./Build install
482
483       the command "cpan ." does all of this at once. It figures out which of
484       the two mantras is appropriate, fetches and installs all prerequisites,
485       takes care of them recursively, and finally finishes the installation
486       of the module in the current directory, be it a CPAN module or not.
487
488       The typical usage case is for private modules or working copies of
489       projects from remote repositories on the local disk.
490
491   Redirection
492       The usual shell redirection symbols " | " and ">" are recognized by the
493       cpan shell only when surrounded by whitespace. So piping to pager or
494       redirecting output into a file works somewhat as in a normal shell,
495       with the stipulation that you must type extra spaces.
496
497   Plugin support ***EXPERIMENTAL***
498       Plugins are objects that implement any of currently eight methods:
499
500         pre_get
501         post_get
502         pre_make
503         post_make
504         pre_test
505         post_test
506         pre_install
507         post_install
508
509       The "plugin_list" configuration parameter holds a list of strings of
510       the form
511
512         Modulename=arg0,arg1,arg2,arg3,...
513
514       eg:
515
516         CPAN::Plugin::Flurb=dir,/opt/pkgs/flurb/raw,verbose,1
517
518       At run time, each listed plugin is instantiated as a singleton object
519       by running the equivalent of this pseudo code:
520
521         my $plugin = <string representation from config>;
522         <generate Modulename and arguments from $plugin>;
523         my $p = $instance{$plugin} ||= Modulename->new($arg0,$arg1,...);
524
525       The generated singletons are kept around from instantiation until the
526       end of the shell session. <plugin_list> can be reconfigured at any time
527       at run time. While the cpan shell is running, it checks all activated
528       plugins at each of the 8 reference points listed above and runs the
529       respective method if it is implemented for that object. The method is
530       called with the active CPAN::Distribution object passed in as an
531       argument.
532

CONFIGURATION

534       When the CPAN module is used for the first time, a configuration
535       dialogue tries to determine a couple of site specific options. The
536       result of the dialog is stored in a hash reference  $CPAN::Config in a
537       file CPAN/Config.pm.
538
539       Default values defined in the CPAN/Config.pm file can be overridden in
540       a user specific file: CPAN/MyConfig.pm. Such a file is best placed in
541       "$HOME/.cpan/CPAN/MyConfig.pm", because "$HOME/.cpan" is added to the
542       search path of the CPAN module before the use() or require()
543       statements. The mkmyconfig command writes this file for you.
544
545       The "o conf" command has various bells and whistles:
546
547       completion support
548           If you have a ReadLine module installed, you can hit TAB at any
549           point of the commandline and "o conf" will offer you completion for
550           the built-in subcommands and/or config variable names.
551
552       displaying some help: o conf help
553           Displays a short help
554
555       displaying current values: o conf [KEY]
556           Displays the current value(s) for this config variable. Without
557           KEY, displays all subcommands and config variables.
558
559           Example:
560
561             o conf shell
562
563           If KEY starts and ends with a slash, the string in between is
564           treated as a regular expression and only keys matching this regexp
565           are displayed
566
567           Example:
568
569             o conf /color/
570
571       changing of scalar values: o conf KEY VALUE
572           Sets the config variable KEY to VALUE. The empty string can be
573           specified as usual in shells, with '' or ""
574
575           Example:
576
577             o conf wget /usr/bin/wget
578
579       changing of list values: o conf KEY SHIFT|UNSHIFT|PUSH|POP|SPLICE|LIST
580           If a config variable name ends with "list", it is a list. "o conf
581           KEY shift" removes the first element of the list, "o conf KEY pop"
582           removes the last element of the list. "o conf KEYS unshift LIST"
583           prepends a list of values to the list, "o conf KEYS push LIST"
584           appends a list of valued to the list.
585
586           Likewise, "o conf KEY splice LIST" passes the LIST to the
587           corresponding splice command.
588
589           Finally, any other list of arguments is taken as a new list value
590           for the KEY variable discarding the previous value.
591
592           Examples:
593
594             o conf urllist unshift http://cpan.dev.local/CPAN
595             o conf urllist splice 3 1
596             o conf urllist http://cpan1.local http://cpan2.local ftp://ftp.perl.org
597
598       reverting to saved: o conf defaults
599           Reverts all config variables to the state in the saved config file.
600
601       saving the config: o conf commit
602           Saves all config variables to the current config file
603           (CPAN/Config.pm or CPAN/MyConfig.pm that was loaded at start).
604
605       The configuration dialog can be started any time later again by issuing
606       the command " o conf init " in the CPAN shell. A subset of the
607       configuration dialog can be run by issuing "o conf init WORD" where
608       WORD is any valid config variable or a regular expression.
609
610   Config Variables
611       The following keys in the hash reference $CPAN::Config are currently
612       defined:
613
614         applypatch         path to external prg
615         auto_commit        commit all changes to config variables to disk
616         build_cache        size of cache for directories to build modules
617         build_dir          locally accessible directory to build modules
618         build_dir_reuse    boolean if distros in build_dir are persistent
619         build_requires_install_policy
620                            to install or not to install when a module is
621                            only needed for building. yes|no|ask/yes|ask/no
622         bzip2              path to external prg
623         cache_metadata     use serializer to cache metadata
624         check_sigs         if signatures should be verified
625         cleanup_after_install
626                            remove build directory immediately after a
627                            successful install
628         colorize_debug     Term::ANSIColor attributes for debugging output
629         colorize_output    boolean if Term::ANSIColor should colorize output
630         colorize_print     Term::ANSIColor attributes for normal output
631         colorize_warn      Term::ANSIColor attributes for warnings
632         commandnumber_in_prompt
633                            boolean if you want to see current command number
634         commands_quote     preferred character to use for quoting external
635                            commands when running them. Defaults to double
636                            quote on Windows, single tick everywhere else;
637                            can be set to space to disable quoting
638         connect_to_internet_ok
639                            whether to ask if opening a connection is ok before
640                            urllist is specified
641         cpan_home          local directory reserved for this package
642         curl               path to external prg
643         dontload_hash      DEPRECATED
644         dontload_list      arrayref: modules in the list will not be
645                            loaded by the CPAN::has_inst() routine
646         ftp                path to external prg
647         ftp_passive        if set, the environment variable FTP_PASSIVE is set
648                            for downloads
649         ftp_proxy          proxy host for ftp requests
650         ftpstats_period    max number of days to keep download statistics
651         ftpstats_size      max number of items to keep in the download statistics
652         getcwd             see below
653         gpg                path to external prg
654         gzip               location of external program gzip
655         halt_on_failure    stop processing after the first failure of queued
656                            items or dependencies
657         histfile           file to maintain history between sessions
658         histsize           maximum number of lines to keep in histfile
659         http_proxy         proxy host for http requests
660         inactivity_timeout breaks interactive Makefile.PLs or Build.PLs
661                            after this many seconds inactivity. Set to 0 to
662                            disable timeouts.
663         index_expire       refetch index files after this many days
664         inhibit_startup_message
665                            if true, suppress the startup message
666         keep_source_where  directory in which to keep the source (if we do)
667         load_module_verbosity
668                            report loading of optional modules used by CPAN.pm
669         lynx               path to external prg
670         make               location of external make program
671         make_arg           arguments that should always be passed to 'make'
672         make_install_make_command
673                            the make command for running 'make install', for
674                            example 'sudo make'
675         make_install_arg   same as make_arg for 'make install'
676         makepl_arg         arguments passed to 'perl Makefile.PL'
677         mbuild_arg         arguments passed to './Build'
678         mbuild_install_arg arguments passed to './Build install'
679         mbuild_install_build_command
680                            command to use instead of './Build' when we are
681                            in the install stage, for example 'sudo ./Build'
682         mbuildpl_arg       arguments passed to 'perl Build.PL'
683         ncftp              path to external prg
684         ncftpget           path to external prg
685         no_proxy           don't proxy to these hosts/domains (comma separated list)
686         pager              location of external program more (or any pager)
687         password           your password if you CPAN server wants one
688         patch              path to external prg
689         patches_dir        local directory containing patch files
690         perl5lib_verbosity verbosity level for PERL5LIB additions
691         plugin_list        list of active hooks (see Plugin support above
692                            and the CPAN::Plugin module)
693         prefer_external_tar
694                            per default all untar operations are done with
695                            Archive::Tar; by setting this variable to true
696                            the external tar command is used if available
697         prefer_installer   legal values are MB and EUMM: if a module comes
698                            with both a Makefile.PL and a Build.PL, use the
699                            former (EUMM) or the latter (MB); if the module
700                            comes with only one of the two, that one will be
701                            used no matter the setting
702         prerequisites_policy
703                            what to do if you are missing module prerequisites
704                            ('follow' automatically, 'ask' me, or 'ignore')
705                            For 'follow', also sets PERL_AUTOINSTALL and
706                            PERL_EXTUTILS_AUTOINSTALL for "--defaultdeps" if
707                            not already set
708         prefs_dir          local directory to store per-distro build options
709         proxy_user         username for accessing an authenticating proxy
710         proxy_pass         password for accessing an authenticating proxy
711         randomize_urllist  add some randomness to the sequence of the urllist
712         recommends_policy  whether recommended prerequisites should be included
713         scan_cache         controls scanning of cache ('atstart', 'atexit' or 'never')
714         shell              your favorite shell
715         show_unparsable_versions
716                            boolean if r command tells which modules are versionless
717         show_upload_date   boolean if commands should try to determine upload date
718         show_zero_versions boolean if r command tells for which modules $version==0
719         suggests_policy    whether suggested prerequisites should be included
720         tar                location of external program tar
721         tar_verbosity      verbosity level for the tar command
722         term_is_latin      deprecated: if true Unicode is translated to ISO-8859-1
723                            (and nonsense for characters outside latin range)
724         term_ornaments     boolean to turn ReadLine ornamenting on/off
725         test_report        email test reports (if CPAN::Reporter is installed)
726         trust_test_report_history
727                            skip testing when previously tested ok (according to
728                            CPAN::Reporter history)
729         unzip              location of external program unzip
730         urllist            arrayref to nearby CPAN sites (or equivalent locations)
731         use_prompt_default set PERL_MM_USE_DEFAULT for configure/make/test/install
732         use_sqlite         use CPAN::SQLite for metadata storage (fast and lean)
733         username           your username if you CPAN server wants one
734         version_timeout    stops version parsing after this many seconds.
735                            Default is 15 secs. Set to 0 to disable.
736         wait_list          arrayref to a wait server to try (See CPAN::WAIT)
737         wget               path to external prg
738         yaml_load_code     enable YAML code deserialisation via CPAN::DeferredCode
739         yaml_module        which module to use to read/write YAML files
740
741       You can set and query each of these options interactively in the cpan
742       shell with the "o conf" or the "o conf init" command as specified
743       below.
744
745       "o conf <scalar option>"
746         prints the current value of the scalar option
747
748       "o conf <scalar option> <value>"
749         Sets the value of the scalar option to value
750
751       "o conf <list option>"
752         prints the current value of the list option in MakeMaker's neatvalue
753         format.
754
755       "o conf <list option> [shift|pop]"
756         shifts or pops the array in the list option variable
757
758       "o conf <list option> [unshift|push|splice] <list>"
759         works like the corresponding perl commands.
760
761       interactive editing: o conf init [MATCH|LIST]
762         Runs an interactive configuration dialog for matching variables.
763         Without argument runs the dialog over all supported config variables.
764         To specify a MATCH the argument must be enclosed by slashes.
765
766         Examples:
767
768           o conf init ftp_passive ftp_proxy
769           o conf init /color/
770
771         Note: this method of setting config variables often provides more
772         explanation about the functioning of a variable than the manpage.
773
774   CPAN::anycwd($path): Note on config variable getcwd
775       CPAN.pm changes the current working directory often and needs to
776       determine its own current working directory. By default it uses
777       Cwd::cwd, but if for some reason this doesn't work on your system,
778       configure alternatives according to the following table:
779
780       cwd Calls Cwd::cwd
781
782       getcwd
783           Calls Cwd::getcwd
784
785       fastcwd
786           Calls Cwd::fastcwd
787
788       getdcwd
789           Calls Cwd::getdcwd
790
791       backtickcwd
792           Calls the external command cwd.
793
794   Note on the format of the urllist parameter
795       urllist parameters are URLs according to RFC 1738. We do a little
796       guessing if your URL is not compliant, but if you have problems with
797       "file" URLs, please try the correct format. Either:
798
799           file://localhost/whatever/ftp/pub/CPAN/
800
801       or
802
803           file:///home/ftp/pub/CPAN/
804
805   The urllist parameter has CD-ROM support
806       The "urllist" parameter of the configuration table contains a list of
807       URLs used for downloading. If the list contains any "file" URLs, CPAN
808       always tries there first. This feature is disabled for index files. So
809       the recommendation for the owner of a CD-ROM with CPAN contents is:
810       include your local, possibly outdated CD-ROM as a "file" URL at the end
811       of urllist, e.g.
812
813         o conf urllist push file://localhost/CDROM/CPAN
814
815       CPAN.pm will then fetch the index files from one of the CPAN sites that
816       come at the beginning of urllist. It will later check for each module
817       to see whether there is a local copy of the most recent version.
818
819       Another peculiarity of urllist is that the site that we could
820       successfully fetch the last file from automatically gets a preference
821       token and is tried as the first site for the next request. So if you
822       add a new site at runtime it may happen that the previously preferred
823       site will be tried another time. This means that if you want to
824       disallow a site for the next transfer, it must be explicitly removed
825       from urllist.
826
827   Maintaining the urllist parameter
828       If you have YAML.pm (or some other YAML module configured in
829       "yaml_module") installed, CPAN.pm collects a few statistical data about
830       recent downloads. You can view the statistics with the "hosts" command
831       or inspect them directly by looking into the "FTPstats.yml" file in
832       your "cpan_home" directory.
833
834       To get some interesting statistics, it is recommended that
835       "randomize_urllist" be set; this introduces some amount of randomness
836       into the URL selection.
837
838   The "requires" and "build_requires" dependency declarations
839       Since CPAN.pm version 1.88_51 modules declared as "build_requires" by a
840       distribution are treated differently depending on the config variable
841       "build_requires_install_policy". By setting
842       "build_requires_install_policy" to "no", such a module is not
843       installed. It is only built and tested, and then kept in the list of
844       tested but uninstalled modules. As such, it is available during the
845       build of the dependent module by integrating the path to the
846       "blib/arch" and "blib/lib" directories in the environment variable
847       PERL5LIB. If "build_requires_install_policy" is set ti "yes", then both
848       modules declared as "requires" and those declared as "build_requires"
849       are treated alike. By setting to "ask/yes" or "ask/no", CPAN.pm asks
850       the user and sets the default accordingly.
851
852   Configuration for individual distributions (Distroprefs)
853       (Note: This feature has been introduced in CPAN.pm 1.8854)
854
855       Distributions on CPAN usually behave according to what we call the CPAN
856       mantra. Or since the advent of Module::Build we should talk about two
857       mantras:
858
859           perl Makefile.PL     perl Build.PL
860           make                 ./Build
861           make test            ./Build test
862           make install         ./Build install
863
864       But some modules cannot be built with this mantra. They try to get some
865       extra data from the user via the environment, extra arguments, or
866       interactively--thus disturbing the installation of large bundles like
867       Phalanx100 or modules with many dependencies like Plagger.
868
869       The distroprefs system of "CPAN.pm" addresses this problem by allowing
870       the user to specify extra informations and recipes in YAML files to
871       either
872
873       ·   pass additional arguments to one of the four commands,
874
875       ·   set environment variables
876
877       ·   instantiate an Expect object that reads from the console, waits for
878           some regular expressions and enters some answers
879
880       ·   temporarily override assorted "CPAN.pm" configuration variables
881
882       ·   specify dependencies the original maintainer forgot
883
884       ·   disable the installation of an object altogether
885
886       See the YAML and Data::Dumper files that come with the "CPAN.pm"
887       distribution in the "distroprefs/" directory for examples.
888
889   Filenames
890       The YAML files themselves must have the ".yml" extension; all other
891       files are ignored (for two exceptions see Fallback Data::Dumper and
892       Storable below). The containing directory can be specified in "CPAN.pm"
893       in the "prefs_dir" config variable. Try "o conf init prefs_dir" in the
894       CPAN shell to set and activate the distroprefs system.
895
896       Every YAML file may contain arbitrary documents according to the YAML
897       specification, and every document is treated as an entity that can
898       specify the treatment of a single distribution.
899
900       Filenames can be picked arbitrarily; "CPAN.pm" always reads all files
901       (in alphabetical order) and takes the key "match" (see below in
902       Language Specs) as a hashref containing match criteria that determine
903       if the current distribution matches the YAML document or not.
904
905   Fallback Data::Dumper and Storable
906       If neither your configured "yaml_module" nor YAML.pm is installed,
907       CPAN.pm falls back to using Data::Dumper and Storable and looks for
908       files with the extensions ".dd" or ".st" in the "prefs_dir" directory.
909       These files are expected to contain one or more hashrefs.  For
910       Data::Dumper generated files, this is expected to be done with by
911       defining $VAR1, $VAR2, etc. The YAML shell would produce these with the
912       command
913
914           ysh < somefile.yml > somefile.dd
915
916       For Storable files the rule is that they must be constructed such that
917       "Storable::retrieve(file)" returns an array reference and the array
918       elements represent one distropref object each. The conversion from YAML
919       would look like so:
920
921           perl -MYAML=LoadFile -MStorable=nstore -e '
922               @y=LoadFile(shift);
923               nstore(\@y, shift)' somefile.yml somefile.st
924
925       In bootstrapping situations it is usually sufficient to translate only
926       a few YAML files to Data::Dumper for crucial modules like "YAML::Syck",
927       "YAML.pm" and "Expect.pm". If you prefer Storable over Data::Dumper,
928       remember to pull out a Storable version that writes an older format
929       than all the other Storable versions that will need to read them.
930
931   Blueprint
932       The following example contains all supported keywords and structures
933       with the exception of "eexpect" which can be used instead of "expect".
934
935         ---
936         comment: "Demo"
937         match:
938           module: "Dancing::Queen"
939           distribution: "^CHACHACHA/Dancing-"
940           not_distribution: "\.zip$"
941           perl: "/usr/local/cariba-perl/bin/perl"
942           perlconfig:
943             archname: "freebsd"
944             not_cc: "gcc"
945           env:
946             DANCING_FLOOR: "Shubiduh"
947         disabled: 1
948         cpanconfig:
949           make: gmake
950         pl:
951           args:
952             - "--somearg=specialcase"
953
954           env: {}
955
956           expect:
957             - "Which is your favorite fruit"
958             - "apple\n"
959
960         make:
961           args:
962             - all
963             - extra-all
964
965           env: {}
966
967           expect: []
968
969           commandline: "echo SKIPPING make"
970
971         test:
972           args: []
973
974           env: {}
975
976           expect: []
977
978         install:
979           args: []
980
981           env:
982             WANT_TO_INSTALL: YES
983
984           expect:
985             - "Do you really want to install"
986             - "y\n"
987
988         patches:
989           - "ABCDE/Fedcba-3.14-ABCDE-01.patch"
990
991         depends:
992           configure_requires:
993             LWP: 5.8
994           build_requires:
995             Test::Exception: 0.25
996           requires:
997             Spiffy: 0.30
998
999   Language Specs
1000       Every YAML document represents a single hash reference. The valid keys
1001       in this hash are as follows:
1002
1003       comment [scalar]
1004           A comment
1005
1006       cpanconfig [hash]
1007           Temporarily override assorted "CPAN.pm" configuration variables.
1008
1009           Supported are: "build_requires_install_policy", "check_sigs",
1010           "make", "make_install_make_command", "prefer_installer",
1011           "test_report". Please report as a bug when you need another one
1012           supported.
1013
1014       depends [hash] *** EXPERIMENTAL FEATURE ***
1015           All three types, namely "configure_requires", "build_requires", and
1016           "requires" are supported in the way specified in the META.yml
1017           specification. The current implementation merges the specified
1018           dependencies with those declared by the package maintainer. In a
1019           future implementation this may be changed to override the original
1020           declaration.
1021
1022       disabled [boolean]
1023           Specifies that this distribution shall not be processed at all.
1024
1025       features [array] *** EXPERIMENTAL FEATURE ***
1026           Experimental implementation to deal with optional_features from
1027           META.yml. Still needs coordination with installer software and
1028           currently works only for META.yml declaring "dynamic_config=0". Use
1029           with caution.
1030
1031       goto [string]
1032           The canonical name of a delegate distribution to install instead.
1033           Useful when a new version, although it tests OK itself, breaks
1034           something else or a developer release or a fork is already uploaded
1035           that is better than the last released version.
1036
1037       install [hash]
1038           Processing instructions for the "make install" or "./Build install"
1039           phase of the CPAN mantra. See below under Processing Instructions.
1040
1041       make [hash]
1042           Processing instructions for the "make" or "./Build" phase of the
1043           CPAN mantra. See below under Processing Instructions.
1044
1045       match [hash]
1046           A hashref with one or more of the keys "distribution", "module",
1047           "perl", "perlconfig", and "env" that specify whether a document is
1048           targeted at a specific CPAN distribution or installation.  Keys
1049           prefixed with "not_" negates the corresponding match.
1050
1051           The corresponding values are interpreted as regular expressions.
1052           The "distribution" related one will be matched against the
1053           canonical distribution name, e.g. "AUTHOR/Foo-Bar-3.14.tar.gz".
1054
1055           The "module" related one will be matched against all modules
1056           contained in the distribution until one module matches.
1057
1058           The "perl" related one will be matched against $^X (but with the
1059           absolute path).
1060
1061           The value associated with "perlconfig" is itself a hashref that is
1062           matched against corresponding values in the %Config::Config hash
1063           living in the "Config.pm" module.  Keys prefixed with "not_"
1064           negates the corresponding match.
1065
1066           The value associated with "env" is itself a hashref that is matched
1067           against corresponding values in the %ENV hash.  Keys prefixed with
1068           "not_" negates the corresponding match.
1069
1070           If more than one restriction of "module", "distribution", etc. is
1071           specified, the results of the separately computed match values must
1072           all match. If so, the hashref represented by the YAML document is
1073           returned as the preference structure for the current distribution.
1074
1075       patches [array]
1076           An array of patches on CPAN or on the local disk to be applied in
1077           order via an external patch program. If the value for the "-p"
1078           parameter is 0 or 1 is determined by reading the patch beforehand.
1079           The path to each patch is either an absolute path on the local
1080           filesystem or relative to a patch directory specified in the
1081           "patches_dir" configuration variable or in the format of a
1082           canonical distro name. For examples please consult the distroprefs/
1083           directory in the CPAN.pm distribution (these examples are not
1084           installed by default).
1085
1086           Note: if the "applypatch" program is installed and "CPAN::Config"
1087           knows about it and a patch is written by the "makepatch" program,
1088           then "CPAN.pm" lets "applypatch" apply the patch. Both "makepatch"
1089           and "applypatch" are available from CPAN in the "JV/makepatch-*"
1090           distribution.
1091
1092       pl [hash]
1093           Processing instructions for the "perl Makefile.PL" or "perl
1094           Build.PL" phase of the CPAN mantra. See below under Processing
1095           Instructions.
1096
1097       test [hash]
1098           Processing instructions for the "make test" or "./Build test" phase
1099           of the CPAN mantra. See below under Processing Instructions.
1100
1101   Processing Instructions
1102       args [array]
1103           Arguments to be added to the command line
1104
1105       commandline
1106           A full commandline to run via "system()".  During execution, the
1107           environment variable PERL is set to $^X (but with an absolute
1108           path). If "commandline" is specified, "args" is not used.
1109
1110       eexpect [hash]
1111           Extended "expect". This is a hash reference with four allowed keys,
1112           "mode", "timeout", "reuse", and "talk".
1113
1114           You must install the "Expect" module to use "eexpect". CPAN.pm does
1115           not install it for you.
1116
1117           "mode" may have the values "deterministic" for the case where all
1118           questions come in the order written down and "anyorder" for the
1119           case where the questions may come in any order. The default mode is
1120           "deterministic".
1121
1122           "timeout" denotes a timeout in seconds. Floating-point timeouts are
1123           OK. With "mode=deterministic", the timeout denotes the timeout per
1124           question; with "mode=anyorder" it denotes the timeout per byte
1125           received from the stream or questions.
1126
1127           "talk" is a reference to an array that contains alternating
1128           questions and answers. Questions are regular expressions and
1129           answers are literal strings. The Expect module watches the stream
1130           from the execution of the external program ("perl Makefile.PL",
1131           "perl Build.PL", "make", etc.).
1132
1133           For "mode=deterministic", the CPAN.pm injects the corresponding
1134           answer as soon as the stream matches the regular expression.
1135
1136           For "mode=anyorder" CPAN.pm answers a question as soon as the
1137           timeout is reached for the next byte in the input stream. In this
1138           mode you can use the "reuse" parameter to decide what will happen
1139           with a question-answer pair after it has been used. In the default
1140           case (reuse=0) it is removed from the array, avoiding being used
1141           again accidentally. If you want to answer the question "Do you
1142           really want to do that" several times, then it must be included in
1143           the array at least as often as you want this answer to be given.
1144           Setting the parameter "reuse" to 1 makes this repetition
1145           unnecessary.
1146
1147       env [hash]
1148           Environment variables to be set during the command
1149
1150       expect [array]
1151           You must install the "Expect" module to use "expect". CPAN.pm does
1152           not install it for you.
1153
1154           "expect: <array>" is a short notation for this "eexpect":
1155
1156                   eexpect:
1157                           mode: deterministic
1158                           timeout: 15
1159                           talk: <array>
1160
1161   Schema verification with "Kwalify"
1162       If you have the "Kwalify" module installed (which is part of the
1163       Bundle::CPANxxl), then all your distroprefs files are checked for
1164       syntactic correctness.
1165
1166   Example Distroprefs Files
1167       "CPAN.pm" comes with a collection of example YAML files. Note that
1168       these are really just examples and should not be used without care
1169       because they cannot fit everybody's purpose. After all, the authors of
1170       the packages that ask questions had a need to ask, so you should watch
1171       their questions and adjust the examples to your environment and your
1172       needs. You have been warned:-)
1173

PROGRAMMER'S INTERFACE

1175       If you do not enter the shell, shell commands are available both as
1176       methods ("CPAN::Shell->install(...)") and as functions in the calling
1177       package ("install(...)").  Before calling low-level commands, it makes
1178       sense to initialize components of CPAN you need, e.g.:
1179
1180         CPAN::HandleConfig->load;
1181         CPAN::Shell::setup_output;
1182         CPAN::Index->reload;
1183
1184       High-level commands do such initializations automatically.
1185
1186       There's currently only one class that has a stable interface -
1187       CPAN::Shell. All commands that are available in the CPAN shell are
1188       methods of the class CPAN::Shell. The arguments on the commandline are
1189       passed as arguments to the method.
1190
1191       So if you take for example the shell command
1192
1193         notest install A B C
1194
1195       the actually executed command is
1196
1197         CPAN::Shell->notest("install","A","B","C");
1198
1199       Each of the commands that produce listings of modules ("r",
1200       "autobundle", "u") also return a list of the IDs of all modules within
1201       the list.
1202
1203       expand($type,@things)
1204         The IDs of all objects available within a program are strings that
1205         can be expanded to the corresponding real objects with the
1206         "CPAN::Shell->expand("Module",@things)" method. Expand returns a list
1207         of CPAN::Module objects according to the @things arguments given. In
1208         scalar context, it returns only the first element of the list.
1209
1210       expandany(@things)
1211         Like expand, but returns objects of the appropriate type, i.e.
1212         CPAN::Bundle objects for bundles, CPAN::Module objects for modules,
1213         and CPAN::Distribution objects for distributions. Note: it does not
1214         expand to CPAN::Author objects.
1215
1216       Programming Examples
1217         This enables the programmer to do operations that combine
1218         functionalities that are available in the shell.
1219
1220             # install everything that is outdated on my disk:
1221             perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'
1222
1223             # install my favorite programs if necessary:
1224             for $mod (qw(Net::FTP Digest::SHA Data::Dumper)) {
1225                 CPAN::Shell->install($mod);
1226             }
1227
1228             # list all modules on my disk that have no VERSION number
1229             for $mod (CPAN::Shell->expand("Module","/./")) {
1230                 next unless $mod->inst_file;
1231                 # MakeMaker convention for undefined $VERSION:
1232                 next unless $mod->inst_version eq "undef";
1233                 print "No VERSION in ", $mod->id, "\n";
1234             }
1235
1236             # find out which distribution on CPAN contains a module:
1237             print CPAN::Shell->expand("Module","Apache::Constants")->cpan_file
1238
1239         Or if you want to schedule a cron job to watch CPAN, you could list
1240         all modules that need updating. First a quick and dirty way:
1241
1242             perl -e 'use CPAN; CPAN::Shell->r;'
1243
1244         If you don't want any output should all modules be up to date, parse
1245         the output of above command for the regular expression "/modules are
1246         up to date/" and decide to mail the output only if it doesn't match.
1247
1248         If you prefer to do it more in a programmerish style in one single
1249         process, something like this may better suit you:
1250
1251           # list all modules on my disk that have newer versions on CPAN
1252           for $mod (CPAN::Shell->expand("Module","/./")) {
1253             next unless $mod->inst_file;
1254             next if $mod->uptodate;
1255             printf "Module %s is installed as %s, could be updated to %s from CPAN\n",
1256                 $mod->id, $mod->inst_version, $mod->cpan_version;
1257           }
1258
1259         If that gives too much output every day, you may want to watch only
1260         for three modules. You can write
1261
1262           for $mod (CPAN::Shell->expand("Module","/Apache|LWP|CGI/")) {
1263
1264         as the first line instead. Or you can combine some of the above
1265         tricks:
1266
1267           # watch only for a new mod_perl module
1268           $mod = CPAN::Shell->expand("Module","mod_perl");
1269           exit if $mod->uptodate;
1270           # new mod_perl arrived, let me know all update recommendations
1271           CPAN::Shell->r;
1272
1273   Methods in the other Classes
1274       CPAN::Author::as_glimpse()
1275           Returns a one-line description of the author
1276
1277       CPAN::Author::as_string()
1278           Returns a multi-line description of the author
1279
1280       CPAN::Author::email()
1281           Returns the author's email address
1282
1283       CPAN::Author::fullname()
1284           Returns the author's name
1285
1286       CPAN::Author::name()
1287           An alias for fullname
1288
1289       CPAN::Bundle::as_glimpse()
1290           Returns a one-line description of the bundle
1291
1292       CPAN::Bundle::as_string()
1293           Returns a multi-line description of the bundle
1294
1295       CPAN::Bundle::clean()
1296           Recursively runs the "clean" method on all items contained in the
1297           bundle.
1298
1299       CPAN::Bundle::contains()
1300           Returns a list of objects' IDs contained in a bundle. The
1301           associated objects may be bundles, modules or distributions.
1302
1303       CPAN::Bundle::force($method,@args)
1304           Forces CPAN to perform a task that it normally would have refused
1305           to do. Force takes as arguments a method name to be called and any
1306           number of additional arguments that should be passed to the called
1307           method.  The internals of the object get the needed changes so that
1308           CPAN.pm does not refuse to take the action. The "force" is passed
1309           recursively to all contained objects. See also the section above on
1310           the "force" and the "fforce" pragma.
1311
1312       CPAN::Bundle::get()
1313           Recursively runs the "get" method on all items contained in the
1314           bundle
1315
1316       CPAN::Bundle::inst_file()
1317           Returns the highest installed version of the bundle in either @INC
1318           or "$CPAN::Config->{cpan_home}". Note that this is different from
1319           CPAN::Module::inst_file.
1320
1321       CPAN::Bundle::inst_version()
1322           Like CPAN::Bundle::inst_file, but returns the $VERSION
1323
1324       CPAN::Bundle::uptodate()
1325           Returns 1 if the bundle itself and all its members are up-to-date.
1326
1327       CPAN::Bundle::install()
1328           Recursively runs the "install" method on all items contained in the
1329           bundle
1330
1331       CPAN::Bundle::make()
1332           Recursively runs the "make" method on all items contained in the
1333           bundle
1334
1335       CPAN::Bundle::readme()
1336           Recursively runs the "readme" method on all items contained in the
1337           bundle
1338
1339       CPAN::Bundle::test()
1340           Recursively runs the "test" method on all items contained in the
1341           bundle
1342
1343       CPAN::Distribution::as_glimpse()
1344           Returns a one-line description of the distribution
1345
1346       CPAN::Distribution::as_string()
1347           Returns a multi-line description of the distribution
1348
1349       CPAN::Distribution::author
1350           Returns the CPAN::Author object of the maintainer who uploaded this
1351           distribution
1352
1353       CPAN::Distribution::pretty_id()
1354           Returns a string of the form "AUTHORID/TARBALL", where AUTHORID is
1355           the author's PAUSE ID and TARBALL is the distribution filename.
1356
1357       CPAN::Distribution::base_id()
1358           Returns the distribution filename without any archive suffix.  E.g
1359           "Foo-Bar-0.01"
1360
1361       CPAN::Distribution::clean()
1362           Changes to the directory where the distribution has been unpacked
1363           and runs "make clean" there.
1364
1365       CPAN::Distribution::containsmods()
1366           Returns a list of IDs of modules contained in a distribution file.
1367           Works only for distributions listed in the
1368           02packages.details.txt.gz file. This typically means that just most
1369           recent version of a distribution is covered.
1370
1371       CPAN::Distribution::cvs_import()
1372           Changes to the directory where the distribution has been unpacked
1373           and runs something like
1374
1375               cvs -d $cvs_root import -m $cvs_log $cvs_dir $userid v$version
1376
1377           there.
1378
1379       CPAN::Distribution::dir()
1380           Returns the directory into which this distribution has been
1381           unpacked.
1382
1383       CPAN::Distribution::force($method,@args)
1384           Forces CPAN to perform a task that it normally would have refused
1385           to do. Force takes as arguments a method name to be called and any
1386           number of additional arguments that should be passed to the called
1387           method.  The internals of the object get the needed changes so that
1388           CPAN.pm does not refuse to take the action. See also the section
1389           above on the "force" and the "fforce" pragma.
1390
1391       CPAN::Distribution::get()
1392           Downloads the distribution from CPAN and unpacks it. Does nothing
1393           if the distribution has already been downloaded and unpacked within
1394           the current session.
1395
1396       CPAN::Distribution::install()
1397           Changes to the directory where the distribution has been unpacked
1398           and runs the external command "make install" there. If "make" has
1399           not yet been run, it will be run first. A "make test" is issued in
1400           any case and if this fails, the install is cancelled. The
1401           cancellation can be avoided by letting "force" run the "install"
1402           for you.
1403
1404           This install method only has the power to install the distribution
1405           if there are no dependencies in the way. To install an object along
1406           with all its dependencies, use CPAN::Shell->install.
1407
1408           Note that install() gives no meaningful return value. See
1409           uptodate().
1410
1411       CPAN::Distribution::isa_perl()
1412           Returns 1 if this distribution file seems to be a perl
1413           distribution.  Normally this is derived from the file name only,
1414           but the index from CPAN can contain a hint to achieve a return
1415           value of true for other filenames too.
1416
1417       CPAN::Distribution::look()
1418           Changes to the directory where the distribution has been unpacked
1419           and opens a subshell there. Exiting the subshell returns.
1420
1421       CPAN::Distribution::make()
1422           First runs the "get" method to make sure the distribution is
1423           downloaded and unpacked. Changes to the directory where the
1424           distribution has been unpacked and runs the external commands "perl
1425           Makefile.PL" or "perl Build.PL" and "make" there.
1426
1427       CPAN::Distribution::perldoc()
1428           Downloads the pod documentation of the file associated with a
1429           distribution (in HTML format) and runs it through the external
1430           command lynx specified in "$CPAN::Config->{lynx}". If lynx isn't
1431           available, it converts it to plain text with the external command
1432           html2text and runs it through the pager specified in
1433           "$CPAN::Config->{pager}".
1434
1435       CPAN::Distribution::prefs()
1436           Returns the hash reference from the first matching YAML file that
1437           the user has deposited in the "prefs_dir/" directory. The first
1438           succeeding match wins. The files in the "prefs_dir/" are processed
1439           alphabetically, and the canonical distro name (e.g.
1440           AUTHOR/Foo-Bar-3.14.tar.gz) is matched against the regular
1441           expressions stored in the $root->{match}{distribution} attribute
1442           value.  Additionally all module names contained in a distribution
1443           are matched against the regular expressions in the
1444           $root->{match}{module} attribute value. The two match values are
1445           ANDed together. Each of the two attributes are optional.
1446
1447       CPAN::Distribution::prereq_pm()
1448           Returns the hash reference that has been announced by a
1449           distribution as the "requires" and "build_requires" elements. These
1450           can be declared either by the "META.yml" (if authoritative) or can
1451           be deposited after the run of "Build.PL" in the file
1452           "./_build/prereqs" or after the run of "Makfile.PL" written as the
1453           "PREREQ_PM" hash in a comment in the produced "Makefile". Note:
1454           this method only works after an attempt has been made to "make" the
1455           distribution. Returns undef otherwise.
1456
1457       CPAN::Distribution::readme()
1458           Downloads the README file associated with a distribution and runs
1459           it through the pager specified in "$CPAN::Config->{pager}".
1460
1461       CPAN::Distribution::reports()
1462           Downloads report data for this distribution from
1463           www.cpantesters.org and displays a subset of them.
1464
1465       CPAN::Distribution::read_yaml()
1466           Returns the content of the META.yml of this distro as a hashref.
1467           Note: works only after an attempt has been made to "make" the
1468           distribution.  Returns undef otherwise. Also returns undef if the
1469           content of META.yml is not authoritative. (The rules about what
1470           exactly makes the content authoritative are still in flux.)
1471
1472       CPAN::Distribution::test()
1473           Changes to the directory where the distribution has been unpacked
1474           and runs "make test" there.
1475
1476       CPAN::Distribution::uptodate()
1477           Returns 1 if all the modules contained in the distribution are up-
1478           to-date. Relies on containsmods.
1479
1480       CPAN::Index::force_reload()
1481           Forces a reload of all indices.
1482
1483       CPAN::Index::reload()
1484           Reloads all indices if they have not been read for more than
1485           "$CPAN::Config->{index_expire}" days.
1486
1487       CPAN::InfoObj::dump()
1488           CPAN::Author, CPAN::Bundle, CPAN::Module, and CPAN::Distribution
1489           inherit this method. It prints the data structure associated with
1490           an object. Useful for debugging. Note: the data structure is
1491           considered internal and thus subject to change without notice.
1492
1493       CPAN::Module::as_glimpse()
1494           Returns a one-line description of the module in four columns: The
1495           first column contains the word "Module", the second column consists
1496           of one character: an equals sign if this module is already
1497           installed and up-to-date, a less-than sign if this module is
1498           installed but can be upgraded, and a space if the module is not
1499           installed. The third column is the name of the module and the
1500           fourth column gives maintainer or distribution information.
1501
1502       CPAN::Module::as_string()
1503           Returns a multi-line description of the module
1504
1505       CPAN::Module::clean()
1506           Runs a clean on the distribution associated with this module.
1507
1508       CPAN::Module::cpan_file()
1509           Returns the filename on CPAN that is associated with the module.
1510
1511       CPAN::Module::cpan_version()
1512           Returns the latest version of this module available on CPAN.
1513
1514       CPAN::Module::cvs_import()
1515           Runs a cvs_import on the distribution associated with this module.
1516
1517       CPAN::Module::description()
1518           Returns a 44 character description of this module. Only available
1519           for modules listed in The Module List
1520           (CPAN/modules/00modlist.long.html or 00modlist.long.txt.gz)
1521
1522       CPAN::Module::distribution()
1523           Returns the CPAN::Distribution object that contains the current
1524           version of this module.
1525
1526       CPAN::Module::dslip_status()
1527           Returns a hash reference. The keys of the hash are the letters "D",
1528           "S", "L", "I", and <P>, for development status, support level,
1529           language, interface and public licence respectively. The data for
1530           the DSLIP status are collected by pause.perl.org when authors
1531           register their namespaces. The values of the 5 hash elements are
1532           one-character words whose meaning is described in the table below.
1533           There are also 5 hash elements "DV", "SV", "LV", "IV", and <PV>
1534           that carry a more verbose value of the 5 status variables.
1535
1536           Where the 'DSLIP' characters have the following meanings:
1537
1538             D - Development Stage  (Note: *NO IMPLIED TIMESCALES*):
1539               i   - Idea, listed to gain consensus or as a placeholder
1540               c   - under construction but pre-alpha (not yet released)
1541               a/b - Alpha/Beta testing
1542               R   - Released
1543               M   - Mature (no rigorous definition)
1544               S   - Standard, supplied with Perl 5
1545
1546             S - Support Level:
1547               m   - Mailing-list
1548               d   - Developer
1549               u   - Usenet newsgroup comp.lang.perl.modules
1550               n   - None known, try comp.lang.perl.modules
1551               a   - abandoned; volunteers welcome to take over maintenance
1552
1553             L - Language Used:
1554               p   - Perl-only, no compiler needed, should be platform independent
1555               c   - C and perl, a C compiler will be needed
1556               h   - Hybrid, written in perl with optional C code, no compiler needed
1557               +   - C++ and perl, a C++ compiler will be needed
1558               o   - perl and another language other than C or C++
1559
1560             I - Interface Style
1561               f   - plain Functions, no references used
1562               h   - hybrid, object and function interfaces available
1563               n   - no interface at all (huh?)
1564               r   - some use of unblessed References or ties
1565               O   - Object oriented using blessed references and/or inheritance
1566
1567             P - Public License
1568               p   - Standard-Perl: user may choose between GPL and Artistic
1569               g   - GPL: GNU General Public License
1570               l   - LGPL: "GNU Lesser General Public License" (previously known as
1571                     "GNU Library General Public License")
1572               b   - BSD: The BSD License
1573               a   - Artistic license alone
1574               2   - Artistic license 2.0 or later
1575               o   - open source: approved by www.opensource.org
1576               d   - allows distribution without restrictions
1577               r   - restricted distribution
1578               n   - no license at all
1579
1580       CPAN::Module::force($method,@args)
1581           Forces CPAN to perform a task it would normally refuse to do. Force
1582           takes as arguments a method name to be invoked and any number of
1583           additional arguments to pass that method.  The internals of the
1584           object get the needed changes so that CPAN.pm does not refuse to
1585           take the action. See also the section above on the "force" and the
1586           "fforce" pragma.
1587
1588       CPAN::Module::get()
1589           Runs a get on the distribution associated with this module.
1590
1591       CPAN::Module::inst_file()
1592           Returns the filename of the module found in @INC. The first file
1593           found is reported, just as perl itself stops searching @INC once it
1594           finds a module.
1595
1596       CPAN::Module::available_file()
1597           Returns the filename of the module found in PERL5LIB or @INC. The
1598           first file found is reported. The advantage of this method over
1599           "inst_file" is that modules that have been tested but not yet
1600           installed are included because PERL5LIB keeps track of tested
1601           modules.
1602
1603       CPAN::Module::inst_version()
1604           Returns the version number of the installed module in readable
1605           format.
1606
1607       CPAN::Module::available_version()
1608           Returns the version number of the available module in readable
1609           format.
1610
1611       CPAN::Module::install()
1612           Runs an "install" on the distribution associated with this module.
1613
1614       CPAN::Module::look()
1615           Changes to the directory where the distribution associated with
1616           this module has been unpacked and opens a subshell there. Exiting
1617           the subshell returns.
1618
1619       CPAN::Module::make()
1620           Runs a "make" on the distribution associated with this module.
1621
1622       CPAN::Module::manpage_headline()
1623           If module is installed, peeks into the module's manpage, reads the
1624           headline, and returns it. Moreover, if the module has been
1625           downloaded within this session, does the equivalent on the
1626           downloaded module even if it hasn't been installed yet.
1627
1628       CPAN::Module::perldoc()
1629           Runs a "perldoc" on this module.
1630
1631       CPAN::Module::readme()
1632           Runs a "readme" on the distribution associated with this module.
1633
1634       CPAN::Module::reports()
1635           Calls the reports() method on the associated distribution object.
1636
1637       CPAN::Module::test()
1638           Runs a "test" on the distribution associated with this module.
1639
1640       CPAN::Module::uptodate()
1641           Returns 1 if the module is installed and up-to-date.
1642
1643       CPAN::Module::userid()
1644           Returns the author's ID of the module.
1645
1646   Cache Manager
1647       Currently the cache manager only keeps track of the build directory
1648       ($CPAN::Config->{build_dir}). It is a simple FIFO mechanism that
1649       deletes complete directories below "build_dir" as soon as the size of
1650       all directories there gets bigger than $CPAN::Config->{build_cache} (in
1651       MB). The contents of this cache may be used for later re-installations
1652       that you intend to do manually, but will never be trusted by CPAN
1653       itself. This is due to the fact that the user might use these
1654       directories for building modules on different architectures.
1655
1656       There is another directory ($CPAN::Config->{keep_source_where}) where
1657       the original distribution files are kept. This directory is not covered
1658       by the cache manager and must be controlled by the user. If you choose
1659       to have the same directory as build_dir and as keep_source_where
1660       directory, then your sources will be deleted with the same fifo
1661       mechanism.
1662
1663   Bundles
1664       A bundle is just a perl module in the namespace Bundle:: that does not
1665       define any functions or methods. It usually only contains
1666       documentation.
1667
1668       It starts like a perl module with a package declaration and a $VERSION
1669       variable. After that the pod section looks like any other pod with the
1670       only difference being that one special pod section exists starting with
1671       (verbatim):
1672
1673           =head1 CONTENTS
1674
1675       In this pod section each line obeys the format
1676
1677               Module_Name [Version_String] [- optional text]
1678
1679       The only required part is the first field, the name of a module (e.g.
1680       Foo::Bar, i.e. not the name of the distribution file). The rest of the
1681       line is optional. The comment part is delimited by a dash just as in
1682       the man page header.
1683
1684       The distribution of a bundle should follow the same convention as other
1685       distributions.
1686
1687       Bundles are treated specially in the CPAN package. If you say 'install
1688       Bundle::Tkkit' (assuming such a bundle exists), CPAN will install all
1689       the modules in the CONTENTS section of the pod. You can install your
1690       own Bundles locally by placing a conformant Bundle file somewhere into
1691       your @INC path. The autobundle() command which is available in the
1692       shell interface does that for you by including all currently installed
1693       modules in a snapshot bundle file.
1694

PREREQUISITES

1696       The CPAN program is trying to depend on as little as possible so the
1697       user can use it in hostile environment. It works better the more
1698       goodies the environment provides. For example if you try in the CPAN
1699       shell
1700
1701         install Bundle::CPAN
1702
1703       or
1704
1705         install Bundle::CPANxxl
1706
1707       you will find the shell more convenient than the bare shell before.
1708
1709       If you have a local mirror of CPAN and can access all files with
1710       "file:" URLs, then you only need a perl later than perl5.003 to run
1711       this module. Otherwise Net::FTP is strongly recommended. LWP may be
1712       required for non-UNIX systems, or if your nearest CPAN site is
1713       associated with a URL that is not "ftp:".
1714
1715       If you have neither Net::FTP nor LWP, there is a fallback mechanism
1716       implemented for an external ftp command or for an external lynx
1717       command.
1718

UTILITIES

1720   Finding packages and VERSION
1721       This module presumes that all packages on CPAN
1722
1723       · declare their $VERSION variable in an easy to parse manner. This
1724         prerequisite can hardly be relaxed because it consumes far too much
1725         memory to load all packages into the running program just to
1726         determine the $VERSION variable. Currently all programs that are
1727         dealing with version use something like this
1728
1729             perl -MExtUtils::MakeMaker -le \
1730                 'print MM->parse_version(shift)' filename
1731
1732         If you are author of a package and wonder if your $VERSION can be
1733         parsed, please try the above method.
1734
1735       · come as compressed or gzipped tarfiles or as zip files and contain a
1736         "Makefile.PL" or "Build.PL" (well, we try to handle a bit more, but
1737         with little enthusiasm).
1738
1739   Debugging
1740       Debugging this module is more than a bit complex due to interference
1741       from the software producing the indices on CPAN, the mirroring process
1742       on CPAN, packaging, configuration, synchronicity, and even (gasp!) due
1743       to bugs within the CPAN.pm module itself.
1744
1745       For debugging the code of CPAN.pm itself in interactive mode, some
1746       debugging aid can be turned on for most packages within CPAN.pm with
1747       one of
1748
1749       o debug package...
1750         sets debug mode for packages.
1751
1752       o debug -package...
1753         unsets debug mode for packages.
1754
1755       o debug all
1756         turns debugging on for all packages.
1757
1758       o debug number
1759
1760       which sets the debugging packages directly. Note that "o debug 0" turns
1761       debugging off.
1762
1763       What seems a successful strategy is the combination of "reload cpan"
1764       and the debugging switches. Add a new debug statement while running in
1765       the shell and then issue a "reload cpan" and see the new debugging
1766       messages immediately without losing the current context.
1767
1768       "o debug" without an argument lists the valid package names and the
1769       current set of packages in debugging mode. "o debug" has built-in
1770       completion support.
1771
1772       For debugging of CPAN data there is the "dump" command which takes the
1773       same arguments as make/test/install and outputs each object's
1774       Data::Dumper dump. If an argument looks like a perl variable and
1775       contains one of "$", "@" or "%", it is eval()ed and fed to Data::Dumper
1776       directly.
1777
1778   Floppy, Zip, Offline Mode
1779       CPAN.pm works nicely without network access, too. If you maintain
1780       machines that are not networked at all, you should consider working
1781       with "file:" URLs. You'll have to collect your modules somewhere first.
1782       So you might use CPAN.pm to put together all you need on a networked
1783       machine. Then copy the $CPAN::Config->{keep_source_where} (but not
1784       $CPAN::Config->{build_dir}) directory on a floppy. This floppy is kind
1785       of a personal CPAN. CPAN.pm on the non-networked machines works nicely
1786       with this floppy. See also below the paragraph about CD-ROM support.
1787
1788   Basic Utilities for Programmers
1789       has_inst($module)
1790         Returns true if the module is installed. Used to load all modules
1791         into the running CPAN.pm that are considered optional. The config
1792         variable "dontload_list" intercepts the "has_inst()" call such that
1793         an optional module is not loaded despite being available. For
1794         example, the following command will prevent "YAML.pm" from being
1795         loaded:
1796
1797             cpan> o conf dontload_list push YAML
1798
1799         See the source for details.
1800
1801       use_inst($module)
1802         Similary to has_inst() tries to load optional library but also dies
1803         if library is not available
1804
1805       has_usable($module)
1806         Returns true if the module is installed and in a usable state. Only
1807         useful for a handful of modules that are used internally. See the
1808         source for details.
1809
1810       instance($module)
1811         The constructor for all the singletons used to represent modules,
1812         distributions, authors, and bundles. If the object already exists,
1813         this method returns the object; otherwise, it calls the constructor.
1814
1815       frontend()
1816       frontend($new_frontend)
1817         Getter/setter for frontend object. Method just allows to subclass
1818         CPAN.pm.
1819

SECURITY

1821       There's no strong security layer in CPAN.pm. CPAN.pm helps you to
1822       install foreign, unmasked, unsigned code on your machine. We compare to
1823       a checksum that comes from the net just as the distribution file
1824       itself. But we try to make it easy to add security on demand:
1825
1826   Cryptographically signed modules
1827       Since release 1.77, CPAN.pm has been able to verify cryptographically
1828       signed module distributions using Module::Signature.  The CPAN modules
1829       can be signed by their authors, thus giving more security.  The simple
1830       unsigned MD5 checksums that were used before by CPAN protect mainly
1831       against accidental file corruption.
1832
1833       You will need to have Module::Signature installed, which in turn
1834       requires that you have at least one of Crypt::OpenPGP module or the
1835       command-line gpg tool installed.
1836
1837       You will also need to be able to connect over the Internet to the
1838       public key servers, like pgp.mit.edu, and their port 11731 (the HKP
1839       protocol).
1840
1841       The configuration parameter check_sigs is there to turn signature
1842       checking on or off.
1843

EXPORT

1845       Most functions in package CPAN are exported by default. The reason for
1846       this is that the primary use is intended for the cpan shell or for one-
1847       liners.
1848

ENVIRONMENT

1850       When the CPAN shell enters a subshell via the look command, it sets the
1851       environment CPAN_SHELL_LEVEL to 1, or increments that variable if it is
1852       already set.
1853
1854       When CPAN runs, it sets the environment variable PERL5_CPAN_IS_RUNNING
1855       to the ID of the running process. It also sets
1856       PERL5_CPANPLUS_IS_RUNNING to prevent runaway processes which could
1857       happen with older versions of Module::Install.
1858
1859       When running "perl Makefile.PL", the environment variable
1860       "PERL5_CPAN_IS_EXECUTING" is set to the full path of the "Makefile.PL"
1861       that is being executed. This prevents runaway processes with newer
1862       versions of Module::Install.
1863
1864       When the config variable ftp_passive is set, all downloads will be run
1865       with the environment variable FTP_PASSIVE set to this value. This is in
1866       general a good idea as it influences both Net::FTP and LWP based
1867       connections. The same effect can be achieved by starting the cpan shell
1868       with this environment variable set. For Net::FTP alone, one can also
1869       always set passive mode by running libnetcfg.
1870

POPULATE AN INSTALLATION WITH LOTS OF MODULES

1872       Populating a freshly installed perl with one's favorite modules is
1873       pretty easy if you maintain a private bundle definition file. To get a
1874       useful blueprint of a bundle definition file, the command autobundle
1875       can be used on the CPAN shell command line. This command writes a
1876       bundle definition file for all modules installed for the current perl
1877       interpreter. It's recommended to run this command once only, and from
1878       then on maintain the file manually under a private name, say
1879       Bundle/my_bundle.pm. With a clever bundle file you can then simply say
1880
1881           cpan> install Bundle::my_bundle
1882
1883       then answer a few questions and go out for coffee (possibly even in a
1884       different city).
1885
1886       Maintaining a bundle definition file means keeping track of two things:
1887       dependencies and interactivity. CPAN.pm sometimes fails on calculating
1888       dependencies because not all modules define all MakeMaker attributes
1889       correctly, so a bundle definition file should specify prerequisites as
1890       early as possible. On the other hand, it's annoying that so many
1891       distributions need some interactive configuring. So what you can try to
1892       accomplish in your private bundle file is to have the packages that
1893       need to be configured early in the file and the gentle ones later, so
1894       you can go out for coffee after a few minutes and leave CPAN.pm to
1895       churn away unattended.
1896

WORKING WITH CPAN.pm BEHIND FIREWALLS

1898       Thanks to Graham Barr for contributing the following paragraphs about
1899       the interaction between perl, and various firewall configurations. For
1900       further information on firewalls, it is recommended to consult the
1901       documentation that comes with the ncftp program. If you are unable to
1902       go through the firewall with a simple Perl setup, it is likely that you
1903       can configure ncftp so that it works through your firewall.
1904
1905   Three basic types of firewalls
1906       Firewalls can be categorized into three basic types.
1907
1908       http firewall
1909           This is when the firewall machine runs a web server, and to access
1910           the outside world, you must do so via that web server. If you set
1911           environment variables like http_proxy or ftp_proxy to values
1912           beginning with http://, or in your web browser you've proxy
1913           information set, then you know you are running behind an http
1914           firewall.
1915
1916           To access servers outside these types of firewalls with perl (even
1917           for ftp), you need LWP or HTTP::Tiny.
1918
1919       ftp firewall
1920           This where the firewall machine runs an ftp server. This kind of
1921           firewall will only let you access ftp servers outside the firewall.
1922           This is usually done by connecting to the firewall with ftp, then
1923           entering a username like "user@outside.host.com".
1924
1925           To access servers outside these type of firewalls with perl, you
1926           need Net::FTP.
1927
1928       One-way visibility
1929           One-way visibility means these firewalls try to make themselves
1930           invisible to users inside the firewall. An FTP data connection is
1931           normally created by sending your IP address to the remote server
1932           and then listening for the return connection. But the remote server
1933           will not be able to connect to you because of the firewall. For
1934           these types of firewall, FTP connections need to be done in a
1935           passive mode.
1936
1937           There are two that I can think off.
1938
1939           SOCKS
1940               If you are using a SOCKS firewall, you will need to compile
1941               perl and link it with the SOCKS library.  This is what is
1942               normally called a 'socksified' perl. With this executable you
1943               will be able to connect to servers outside the firewall as if
1944               it were not there.
1945
1946           IP Masquerade
1947               This is when the firewall implemented in the kernel (via NAT,
1948               or networking address translation), it allows you to hide a
1949               complete network behind one IP address. With this firewall no
1950               special compiling is needed as you can access hosts directly.
1951
1952               For accessing ftp servers behind such firewalls you usually
1953               need to set the environment variable "FTP_PASSIVE" or the
1954               config variable ftp_passive to a true value.
1955
1956   Configuring lynx or ncftp for going through a firewall
1957       If you can go through your firewall with e.g. lynx, presumably with a
1958       command such as
1959
1960           /usr/local/bin/lynx -pscott:tiger
1961
1962       then you would configure CPAN.pm with the command
1963
1964           o conf lynx "/usr/local/bin/lynx -pscott:tiger"
1965
1966       That's all. Similarly for ncftp or ftp, you would configure something
1967       like
1968
1969           o conf ncftp "/usr/bin/ncftp -f /home/scott/ncftplogin.cfg"
1970
1971       Your mileage may vary...
1972

FAQ

1974       1)  I installed a new version of module X but CPAN keeps saying, I have
1975           the old version installed
1976
1977           Probably you do have the old version installed. This can happen if
1978           a module installs itself into a different directory in the @INC
1979           path than it was previously installed. This is not really a CPAN.pm
1980           problem, you would have the same problem when installing the module
1981           manually. The easiest way to prevent this behaviour is to add the
1982           argument "UNINST=1" to the "make install" call, and that is why
1983           many people add this argument permanently by configuring
1984
1985             o conf make_install_arg UNINST=1
1986
1987       2)  So why is UNINST=1 not the default?
1988
1989           Because there are people who have their precise expectations about
1990           who may install where in the @INC path and who uses which @INC
1991           array. In fine tuned environments "UNINST=1" can cause damage.
1992
1993       3)  I want to clean up my mess, and install a new perl along with all
1994           modules I have. How do I go about it?
1995
1996           Run the autobundle command for your old perl and optionally rename
1997           the resulting bundle file (e.g. Bundle/mybundle.pm), install the
1998           new perl with the Configure option prefix, e.g.
1999
2000               ./Configure -Dprefix=/usr/local/perl-5.6.78.9
2001
2002           Install the bundle file you produced in the first step with
2003           something like
2004
2005               cpan> install Bundle::mybundle
2006
2007           and you're done.
2008
2009       4)  When I install bundles or multiple modules with one command there
2010           is too much output to keep track of.
2011
2012           You may want to configure something like
2013
2014             o conf make_arg "| tee -ai /root/.cpan/logs/make.out"
2015             o conf make_install_arg "| tee -ai /root/.cpan/logs/make_install.out"
2016
2017           so that STDOUT is captured in a file for later inspection.
2018
2019       5)  I am not root, how can I install a module in a personal directory?
2020
2021           As of CPAN 1.9463, if you do not have permission to write the
2022           default perl library directories, CPAN's configuration process will
2023           ask you whether you want to bootstrap <local::lib>, which makes
2024           keeping a personal perl library directory easy.
2025
2026           Another thing you should bear in mind is that the UNINST parameter
2027           can be dangerous when you are installing into a private area
2028           because you might accidentally remove modules that other people
2029           depend on that are not using the private area.
2030
2031       6)  How to get a package, unwrap it, and make a change before building
2032           it?
2033
2034           Have a look at the "look" (!) command.
2035
2036       7)  I installed a Bundle and had a couple of fails. When I retried,
2037           everything resolved nicely. Can this be fixed to work on first try?
2038
2039           The reason for this is that CPAN does not know the dependencies of
2040           all modules when it starts out. To decide about the additional
2041           items to install, it just uses data found in the META.yml file or
2042           the generated Makefile. An undetected missing piece breaks the
2043           process. But it may well be that your Bundle installs some
2044           prerequisite later than some depending item and thus your second
2045           try is able to resolve everything.  Please note, CPAN.pm does not
2046           know the dependency tree in advance and cannot sort the queue of
2047           things to install in a topologically correct order. It resolves
2048           perfectly well if all modules declare the prerequisites correctly
2049           with the PREREQ_PM attribute to MakeMaker or the "requires" stanza
2050           of Module::Build. For bundles which fail and you need to install
2051           often, it is recommended to sort the Bundle definition file
2052           manually.
2053
2054       8)  In our intranet, we have many modules for internal use. How can I
2055           integrate these modules with CPAN.pm but without uploading the
2056           modules to CPAN?
2057
2058           Have a look at the CPAN::Site module.
2059
2060       9)  When I run CPAN's shell, I get an error message about things in my
2061           "/etc/inputrc" (or "~/.inputrc") file.
2062
2063           These are readline issues and can only be fixed by studying
2064           readline configuration on your architecture and adjusting the
2065           referenced file accordingly. Please make a backup of the
2066           "/etc/inputrc" or "~/.inputrc" and edit them. Quite often harmless
2067           changes like uppercasing or lowercasing some arguments solves the
2068           problem.
2069
2070       10) Some authors have strange characters in their names.
2071
2072           Internally CPAN.pm uses the UTF-8 charset. If your terminal is
2073           expecting ISO-8859-1 charset, a converter can be activated by
2074           setting term_is_latin to a true value in your config file. One way
2075           of doing so would be
2076
2077               cpan> o conf term_is_latin 1
2078
2079           If other charset support is needed, please file a bug report
2080           against CPAN.pm at rt.cpan.org and describe your needs. Maybe we
2081           can extend the support or maybe UTF-8 terminals become widely
2082           available.
2083
2084           Note: this config variable is deprecated and will be removed in a
2085           future version of CPAN.pm. It will be replaced with the conventions
2086           around the family of $LANG and $LC_* environment variables.
2087
2088       11) When an install fails for some reason and then I correct the error
2089           condition and retry, CPAN.pm refuses to install the module, saying
2090           "Already tried without success".
2091
2092           Use the force pragma like so
2093
2094             force install Foo::Bar
2095
2096           Or you can use
2097
2098             look Foo::Bar
2099
2100           and then "make install" directly in the subshell.
2101
2102       12) How do I install a "DEVELOPER RELEASE" of a module?
2103
2104           By default, CPAN will install the latest non-developer release of a
2105           module. If you want to install a dev release, you have to specify
2106           the partial path starting with the author id to the tarball you
2107           wish to install, like so:
2108
2109               cpan> install KWILLIAMS/Module-Build-0.27_07.tar.gz
2110
2111           Note that you can use the "ls" command to get this path listed.
2112
2113       13) How do I install a module and all its dependencies from the
2114           commandline, without being prompted for anything, despite my CPAN
2115           configuration (or lack thereof)?
2116
2117           CPAN uses ExtUtils::MakeMaker's prompt() function to ask its
2118           questions, so if you set the PERL_MM_USE_DEFAULT environment
2119           variable, you shouldn't be asked any questions at all (assuming the
2120           modules you are installing are nice about obeying that variable as
2121           well):
2122
2123               % PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install My::Module'
2124
2125       14) How do I create a Module::Build based Build.PL derived from an
2126           ExtUtils::MakeMaker focused Makefile.PL?
2127
2128           http://search.cpan.org/dist/Module-Build-Convert/
2129
2130       15) I'm frequently irritated with the CPAN shell's inability to help me
2131           select a good mirror.
2132
2133           CPAN can now help you select a "good" mirror, based on which ones
2134           have the lowest 'ping' round-trip times.  From the shell, use the
2135           command 'o conf init urllist' and allow CPAN to automatically
2136           select mirrors for you.
2137
2138           Beyond that help, the urllist config parameter is yours. You can
2139           add and remove sites at will. You should find out which sites have
2140           the best up-to-dateness, bandwidth, reliability, etc. and are
2141           topologically close to you. Some people prefer fast downloads,
2142           others up-to-dateness, others reliability.  You decide which to try
2143           in which order.
2144
2145           Henk P. Penning maintains a site that collects data about CPAN
2146           sites:
2147
2148             http://mirrors.cpan.org/
2149
2150           Also, feel free to play with experimental features. Run
2151
2152             o conf init randomize_urllist ftpstats_period ftpstats_size
2153
2154           and choose your favorite parameters. After a few downloads running
2155           the "hosts" command will probably assist you in choosing the best
2156           mirror sites.
2157
2158       16) Why do I get asked the same questions every time I start the shell?
2159
2160           You can make your configuration changes permanent by calling the
2161           command "o conf commit". Alternatively set the "auto_commit"
2162           variable to true by running "o conf init auto_commit" and answering
2163           the following question with yes.
2164
2165       17) Older versions of CPAN.pm had the original root directory of all
2166           tarballs in the build directory. Now there are always random
2167           characters appended to these directory names. Why was this done?
2168
2169           The random characters are provided by File::Temp and ensure that
2170           each module's individual build directory is unique. This makes
2171           running CPAN.pm in concurrent processes simultaneously safe.
2172
2173       18) Speaking of the build directory. Do I have to clean it up myself?
2174
2175           You have the choice to set the config variable "scan_cache" to
2176           "never". Then you must clean it up yourself. The other possible
2177           values, "atstart" and "atexit" clean up the build directory when
2178           you start (or more precisely, after the first extraction into the
2179           build directory) or exit the CPAN shell, respectively. If you never
2180           start up the CPAN shell, you probably also have to clean up the
2181           build directory yourself.
2182

COMPATIBILITY

2184   OLD PERL VERSIONS
2185       CPAN.pm is regularly tested to run under 5.005 and assorted newer
2186       versions. It is getting more and more difficult to get the minimal
2187       prerequisites working on older perls. It is close to impossible to get
2188       the whole Bundle::CPAN working there. If you're in the position to have
2189       only these old versions, be advised that CPAN is designed to work fine
2190       without the Bundle::CPAN installed.
2191
2192       To get things going, note that GBARR/Scalar-List-Utils-1.18.tar.gz is
2193       compatible with ancient perls and that File::Temp is listed as a
2194       prerequisite but CPAN has reasonable workarounds if it is missing.
2195
2196   CPANPLUS
2197       This module and its competitor, the CPANPLUS module, are both much
2198       cooler than the other. CPAN.pm is older. CPANPLUS was designed to be
2199       more modular, but it was never intended to be compatible with CPAN.pm.
2200
2201   CPANMINUS
2202       In the year 2010 App::cpanminus was launched as a new approach to a
2203       cpan shell with a considerably smaller footprint. Very cool stuff.
2204

SECURITY ADVICE

2206       This software enables you to upgrade software on your computer and so
2207       is inherently dangerous because the newly installed software may
2208       contain bugs and may alter the way your computer works or even make it
2209       unusable. Please consider backing up your data before every upgrade.
2210

BUGS

2212       Please report bugs via <http://rt.cpan.org/>
2213
2214       Before submitting a bug, please make sure that the traditional method
2215       of building a Perl module package from a shell by following the
2216       installation instructions of that package still works in your
2217       environment.
2218

AUTHOR

2220       Andreas Koenig "<andk@cpan.org>"
2221

LICENSE

2223       This program is free software; you can redistribute it and/or modify it
2224       under the same terms as Perl itself.
2225
2226       See <http://www.perl.com/perl/misc/Artistic.html>
2227

TRANSLATIONS

2229       Kawai,Takanori provides a Japanese translation of a very old version of
2230       this manpage at
2231       <http://homepage3.nifty.com/hippo2000/perltips/CPAN.htm>
2232

SEE ALSO

2234       Many people enter the CPAN shell by running the cpan utility program
2235       which is installed in the same directory as perl itself. So if you have
2236       this directory in your PATH variable (or some equivalent in your
2237       operating system) then typing "cpan" in a console window will work for
2238       you as well. Above that the utility provides several commandline
2239       shortcuts.
2240
2241       melezhik (Alexey) sent me a link where he published a chef recipe to
2242       work with CPAN.pm: http://community.opscode.com/cookbooks/cpan.
2243
2244
2245
2246perl v5.26.3                      2019-05-14                           CPAN(3)
Impressum