Installing CPAN Perl Modules Revisited

Blog Topics:

It has been a while since How to Install a CPAN Perl Module and things have changed a little bit. The qpsmtpd Download page recommends running

# perl -MCPAN -e shell

This will again go through a configuration wizard, but now you have to answer 'no' to get the full run-down:

CPAN is the world-wide archive of perl resources. It consists of about
300 sites that all replicate the same contents around the globe. Many
countries have at least one CPAN site already. The resources found on
CPAN are easily accessible with the module. If you want to use, lots of things have to be configured. Fortunately, most of
them can be determined automatically. If you prefer the automatic
configuration, answer 'yes' below.

If you prefer to enter a dialog instead, you can answer 'no' to this
question and I'll let you configure in small steps one thing after the
other. (Note: you can revisit this dialog anytime later by typing 'o
conf init' at the cpan prompt.)
Would you like me to configure as much as possible automatically? [yes] no

We accept all the defaults anyway...

The following questions are intended to help you with the
configuration. The CPAN module needs a directory of its own to cache
important index files and maybe keep a temporary mirror of CPAN files.
This may be a site-wide or a personal directory.
First of all, I'd like to create this directory. Where?

CPAN build and cache directory? [/root/.cpan]

Unless you are accessing the CPAN on your filesystem via a file: URL, needs to keep the source files it downloads somewhere. Please
supply a directory where the downloaded files are to be kept.

Download target directory? [/root/.cpan/sources]

Directory where the build process takes place? [/root/.cpan/build]

Until version 1.88 never trusted the contents of the build_dir
directory between sessions. Since 1.88_58 has a YAML-based
mechanism that makes it possible to share the contents of the
build_dir/ directory between different sessions with the same version
of perl. People who prefer to test things several days before
installing will like this feature because it safes a lot of time.

If you say yes to the following question, CPAN will try to store
enough information about the build process so that it can pick up in
future sessions at the same state of affairs as it left a previous

Store and re-use state information about distributions between sessions? [no] can store customized build environments based on regular
expressions for distribution names. These are YAML files where the
default options for and the environment can be overridden and
dialog sequences can be stored that can later be executed by an object. The distribution comes with some prefab YAML
files that cover sample distributions that can be used as blueprints
to store one own prefs. Please check out the distroprefs/ directory of
the distribution to get a quick start into the prefs system.

Directory where to store default options/environment/dialogs for
building modules that need some customization? [/root/.cpan/prefs]

Normally keeps config variables in memory and changes need to
be saved in a separate 'o conf commit' command to make them permanent
between sessions. If you set the 'auto_commit' option to true, changes
to a config variable are always automatically committed to disk.

Always commit changes to config variables to disk? [no] can limit the size of the disk area for keeping the build
directories with all the intermediate files.

Cache size for build directory (in MB)? [100]

The CPAN indexes are usually rebuilt once or twice per hour, but the
typical CPAN mirror mirrors only once or twice per day. Depending on
the quality of your mirror and your desire to be on the bleeding edge,
you may want to set the following value to more or less than one day
(which is the default). It determines after how many days
downloads new indexes.

Let the index expire after how many days? [1]

By default, each time the CPAN module is started, cache scanning is
performed to keep the cache size in sync. To prevent this, answer

Perform cache scanning (atstart or never)? [atstart]

To considerably speed up the initial CPAN shell startup, it is
possible to use Storable to create a cache of metadata. If Storable is
not available, the normal index mechanism will be used.

Note: this mechanism is not used when use_sqlite is on and SQLLite is

Cache metadata (yes/no)? [yes]

The CPAN module can detect when a module which you are trying to build
depends on prerequisites. If this happens, it can build the
prerequisites for you automatically ('follow'), ask you for
confirmation ('ask'), or just ignore them ('ignore'). Please set your
policy to one of the three values.

Policy on building prerequisites (follow, ask or ignore)? [ask]

Every Makefile.PL is run by perl in a separate process. Likewise we
run 'make' and 'make install' in separate processes. If you have
any parameters (e.g. PREFIX, UNINST or the like) you want to
pass to the calls, please specify them here.

If you don't understand this question, just press ENTER.

Typical frequently used settings:

    PREFIX=~/perl    # non-root users (please see manual for more hints)

Parameters for the 'perl Makefile.PL' command? [INSTALLDIRS=site]

Parameters for the 'make' command? Typical frequently used setting:

    -j3              # dual processor system (on GNU make)

Your choice: []

Parameters for the 'make install' command?
Typical frequently used setting:

    UNINST=1         # to always uninstall potentially conflicting files

Your choice: []

A Build.PL is run by perl in a separate process. Likewise we run
'./Build' and './Build install' in separate processes. If you have any
parameters you want to pass to the calls, please specify them here.

Typical frequently used settings:

    --install_base /home/xxx             # different installation directory

Parameters for the 'perl Build.PL' command? [--installdirs site]

Parameters for the './Build' command? Setting might be:

    --extra_linker_flags -L/usr/foo/lib  # non-standard library location

Your choice: []

Do you want to use a different command for './Build install'? Sudo
users will probably prefer:

    su root -c ./Build
    sudo ./Build
    /path1/to/sudo -u admin_account ./Build

or some such. Your choice: [./Build]

Parameters for the './Build install' command? Typical frequently used

    --uninst 1                           # uninstall conflicting files

Your choice: []

If you're accessing the net via proxies, you can specify them in the
CPAN configuration or via environment variables. The variable in
the $CPAN::Config takes precedence.

Your ftp_proxy? []

Your http_proxy? []

Your no_proxy? []

CPAN needs access to at least one CPAN mirror.

As you did not allow me to connect to the internet you need to supply
a valid CPAN URL now.

Please enter the URL of your CPAN mirror

Ouch, did we not pay enough attention? Anyway, just enter...

Please enter the URL of your CPAN mirror
Configuration does not allow connecting to the internet.
Current set of CPAN URLs:
Enter another URL or RETURN to quit: []
New urllist

Please remember to call 'o conf commit' to make the config permanent!

cpan shell -- CPAN exploration and modules installation (v1.9402)
Enter 'h' for help.

cpan[1]> o conf commit
commit: wrote '/etc/perl/CPAN/'

cpan[2]> q
No history written (no histfile specified).
Lockfile removed.

We don't know what to do at the prompt, so use our trusty

# perl -MCPAN -e 'install full::module::name'