How can I explicitly run the configuration?
You can use the Setup.pm module, which will replace your
existing configuration:
perl -MCPANPLUS::Configure::Setup -e 'CPANPLUS::Configure::Setup->init()'For more information, refer to the CPANPLUS::Configure::Setup documentation.
How often are index files reloaded
CPANPLUS uses lazy loading, so index files are only fetched when you
start to use them (this means that if you leave the shell running for
5 days, they will only be fetched for your first search, not for one
you run several days later). If they are older than one day at that
time, they will be fetched. You can force a reload with the Backend method
$cp->reload_indices(update_source => 1);,
or the command x in the default shell.
Are multiple configurations possible?
As of version 0.04, it is possible to have different configuration
files for different users. Simply save a valid configuration in
a different location and set the user's PERL5_CPANPLUS_CONFIG environment
variable to point to the location of the file.
Why can't I upgrade Perl with CPANPLUS?
Although CPAN.pm did permit you to upgrade your version of Perl,
CPANPLUS does not although you can still download a new version
of Perl with CPANPLUS. The decision was made not to permit this
in CPANPLUS because there is no reliable, cross-platform method
that we know of to automatically install Perl (which includes
running configure). Installing a new version of Perl is not
trivial and is best done by hand.
I think I've found a bug in CPANPLUS. How can I see
if it has been reported?
The CPANPLUS bugs mailing list archive is available at
geocrawler.
How can I use CPANPLUS with multiple versions of Perl?
You only need one installation of CPANPLUS for all versions of Perl.
As of version 0.04, CPANPLUS keeps different directories under its
home directory for each version of Perl:
.cpanplus/ authors/ id/ # tarballs live here 5.6.0/ build/ 5.7.3/ build/This prevents conflicts. You can install CPANPLUS for both versions of Perl and then point them at the same home directory for CPANPLUS. You can then invoke the CPANPLUS for a particular version with the -M command-line syntax:
perl5.6.0 -MCPANPLUS -e 'shell'There is a caveat: 5.6.x and 5.7.x and higher are not binary compatible, which means that if you have the same version of storable for both Perl installs, storable will be confused and most likely read the stored source files incorrectly. This is not a problem if you have different versions of storable, because different source files are kept for each version of storable used.
You can also install just one version of CPANPLUS for one version of Perl, and, where appropriate, in the Backend methods, send another Perl binary as an argument:
perl => /home/kane/myperl/perlto override the Perl you invoked the script with.
How can I get CPANPLUS to use my proxy?
CPANPLUS currently only supports proxies with LWP::UserAgent. You will
need to set your environment variables accordingly. For example, to
use an ftp proxy:
$ENV{ftp_proxy} = 'foo.com';Refer to the LWP::UserAgent manpage for more details.
I want to execute certain commands whenever
I start the shell (for
example, set my proxy for a laptop that moves between networks). How can I
do that?
The easiest way is to create a wrapper for shell which includes the
modifications you desire. For instance:
#!/usr/bin/perl BEGIN { $ENV{ftp_proxy} = 'current.domain.org'; } use CPANPLUS; shell();
CPANPLUS reports that it is going to fetch during an
initial install, but it hangs for a long time then reports a
failure.
In versions before 0.04, CPANPLUS was designed to fetch initial files
exclusively from ftp.cpan.org on the assumption this site would
always be available. If CPANPLUS hangs during the initial fetch,
it could mean that ftp.cpan.org is unavailable.
This is only a problem for installation, as
your own host list will be used once CPANPLUS is installed. A
work-around is to edit Config.pm-orig in lib/CPANPLUS in the
CPANPLUS directory. Under the hash key _ftp there's a key
urilist. Near that should be the line
'host' => 'ftp.cpan.org'. Simply replace this host
with another one.
I upgraded my version of CPANPLUS and something no
longer works the same way.
The CPANPLUS interface will only be backwards-compatible with
itself after version 1.0. This gives us a chance to correct
and expand without being locked to an interface in early versions.
Two things that have notably changed since the first version are
the configuration and some Backend return values.
Can CPANPLUS do <random something>?
If it has to do with installing modules, most likely! Keep in mind
that while the default shell may not be able to do something like
"install all modules in the POE namespace" you can easily
make something of the sort, using Backend.
Why not make <some change> to the default shell?
The default shell is designed to be what the developers wanted in a shell.
If it doesn't do what you want, consider writing your own with
Backend, and possibly releasing it
in the CPANPLUS::Shell:: namespace. You can also change your default
shell to be any other CPANPLUS shell you have installed.
What is the lowest version of Perl CPANPLUS works under?
Reliably under 5.005_03.
On what platforms has CPANPLUS been tested?
FreeBSD, Linux, Win32, Solaris, VMS, Darwin (Mac OS X) and Cygwin.
How much CPANPLUS.pm code comes from CPAN.pm?
None.
How can I install modules if I'm not root?
Set makemakerflags to something like this:
LIB=~/perl/lib INSTALLMAN1DIR=~/perl/man/man1 INSTALLMAN3DIR=~/perl/man/man3Of course you should replace 'perl' with the appropriate directory.
Also, be sure never to use UNINST=1 in makeflags.
Can I let different users on my system use CPANPLUS?
Currently, it is not possible to have multiple setup files, so all
users will use the same repository and configuration.
Can I use a local mirror (such as a CD), but fall back
to a public mirror if my files are out of date?
To do this you need to ensure that you have an up-to-date listing
of modules so that if the most recent version of a module isn't
found in the local mirror, CPANPLUS will try to get it from the
external mirror.
In your setup, list only complete mirrors. This way you will get a current listing from one of them when you start CPANPLUS.
Next, add your local mirror at runtime so that it becomes the new first choice.
In this example a CD from another server on the network is added (leave off the host argument if it is on the local machine):
my $cb = new CPANPLUS::Backend; my $conf = $cb->configure_object; $conf->_set_ftp(urilist => [ { path => '/mnt/cdrom', scheme => 'file', host => '//server', }, @{ $conf->_get_ftp('urilist') } ]);Thanks to Nick Clark for asking this at the 2002 German Perl Workshop.