Installing Perl5 Modules Yourself

|
NOTE:
The Perl5 module that you wish to install may be included in our perlpac1 distribution
or may be installable using the vcpan utility. Both of these methods are
preferable to those detailed below. See the
Perl5 module documentation for more details.
|
Installing Perl5 Modules yourself on your Virtual Server can be a tricky exercise.
Utilities for installing Perl5 modules generally assume that
the installation is being done in the root area of the file system
of the host machine. As a Virtual Server user you do not have access
to the root area of the host machine. So, you must install Perl5
modules locally, within your Virtual Server file system.
Installing Perl5 Modules Locally
Normally, the Perl5 module installation procedure includes commands
something like these:
% perl5 Makefile.PL
% make
% make test
% make install
The first command, perl5 Makefile.PL, directs
perl5 to create a makefile for the new module you are installing. When
installing a perl5 module locally you must designate on the
command line the home directory of your perl5 installation. That
information is used by perl5 to create the makefile. Substitute the
following command for perl5 Makefile.PL:
% perl5 Makefile.PL PREFIX=/usr/home/<username>/usr/local
The value <username> above should be replaced with the
username of your Virtual Server. So the complete installation process is:
% perl5 Makefile.PL PREFIX=/usr/home/<username>/usr/local
% make
% make test
% make install
For older modules it may be necessary to designate several other
variables on the command line during the module installation:
% perl5 Makefile.PL PREFIX=/usr/home/<username>/usr/local \
INSTALLPRIVLIB=/usr/home/<username>/usr/local/lib/perl5 \
INSTALLSCRIPT=/usr/home/<username>/usr/local/bin \
INSTALLSITELIB=/usr/home/<username>/usr/local/lib/perl5/site_perl \
INSTALLBIN=/usr/home/<username>/usr/local/bin \
INSTALLMAN1DIR=/usr/home/<username>/usr/local/lib/perl5/man \
INSTALLMAN3DIR=/usr/home/<username>/usr/local/lib/perl5/man/man3
To save yourself some typing you can create a file and put
these variable assignments above in the file (<filename>) something
like this:
PREFIX=/usr/home/<username>/usr/local \
INSTALLPRIVLIB=/usr/home/<username>/usr/local/lib/perl5 \
INSTALLSCRIPT=/usr/home/<username>/usr/local/bin \
INSTALLSITELIB=/usr/home/<username>/usr/local/lib/perl5/site_perl \
INSTALLBIN=/usr/home/<username>/usr/local/bin \
INSTALLMAN1DIR=/usr/home/<username>/usr/local/lib/perl5/man \
INSTALLMAN3DIR=/usr/home/<username>/usr/local/lib/perl5/man/man3
Then, each time you install a perl5 module you can use the following syntax:
% perl5 Makefile.PL `cat <filename>`
% make
% make test
% make install
You also can have a few different local modules installation
procedures, for example one for production perl and another for
development:
% perl5 Makefile.PL `cat <filename>.production`
or
% perl5 Makefile.PL `cat <filename>.development`
Making scripts find the modules you have installed
When you install perl5 on your Virtual Server, all pre-installed modules
are installed into these 4 directories (depending on which version of perl5
you are installing):
/usr/local/lib/perl5
/usr/local/lib/perl5/i386-bsdos/5.00X
/usr/local/lib/perl5/site_perl/i386-bsdos
/usr/local/lib/perl5/site_perl
These 4 directories are already preset in the perl5's @INC array.
That array contains the paths that perl5 searches in order to find
modules. If you install perl5 modules locally as described above,
you will need to append these two directories, which are local to your
Virtual Server, to the @INC array:
/usr/home/<username>/usr/local/lib/perl5
/usr/home/<username>/usr/local/lib/perl5/site_perl
The architecture specific directories are being searched by perl automatically
Each time you want to use modules in that path you should add the
following line to your scripts:
use lib qw(/usr/home/<username>/usr/local/lib/perl5
/usr/home/<username>/usr/local/lib/perl5/site_perl);
You don't have to put it into a BEGIN block; the lib.pm module takes care
of that for you. It also adds the architecture specific directories.
You also can use a BEGIN block to include your installed modules:
BEGIN { unshift @INC, qw(/usr/home/<username>/usr/local/lib/perl5
/usr/home/<username>/usr/local/lib/perl5/site_perl); }
However, the use lib construct seems to be
cleaner and the unshift @INC construct doesn't
automatically add the architecture specific directories to the @INC array.
Installing new modules that require locally installed modules
Okay, imagine that you have installed module A in
/usr/home/<username>/usr/local/lib/perl5. Now you want
to install a module B that demands module A to be already installed. You
know that you have installed the A module, but amazingly B can't locate
it. Why? Because when you try to install the module B it doesn't
know that you have module A installed locally. Perl5 searches
the basic 4 directories as defined by default in the @INC array. But your
local directories aren't listed there.
The solution is simple. The PERL5LIB environment variable does the
same job in the shell as use lib does in your
script. So if you use csh/tcsh type the following at the command line:
% setenv PERL5LIB \
/usr/home/<username>/usr/local/lib/perl5:/usr/home/<username>/usr/local/lib/perl5/site_perl
Check the man page of your favorite shell how to set the environment variables
if you use a shell different from csh/tcsh. Put this setenv statement into
.login or another file that is being sourced each time you login into
your account and you will not have to worry to remember setting it each time
you login.
Module installation using CPAN.pm
An alternative to manually installing perl5 modules is the CPAN.pm module
(see www.perl.com/CPAN/) which
automates module download and installation.
If you have perl5.004 or higher installed you have it bundled with the
distribution. If not, you can download it from CPAN.
When you initially run the
% perl5 -MCPAN -e shell
command, it will ask you a few questions. You can use all
the defaults, except for this one
Parameters for the 'perl Makefile.PL' command? [] PREFIX=/usr/home/<username>/usr/local
and this one:
Parameters for the 'make install' command? [] INSTALLMAN3DIR=/usr/home/<username>/usr/local/lib/perl5/man/man3
When it asks for your favorite CPAN site, try this:
Please enter it here: ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
After configuration of the module is complete, you will see a
> prompt. Then you can try installing modules. To
install the CGI module, do this:
> install CGI
It will fetch the
latest CGI module, unpack it, make it, test it and install it into your
local area or the directory you specified as the PREFIX directory. The
command:
> i /CGI/
will return the list of modules that match that pattern.
The CPAN.pm module has more functionality, like checking for the latest modules, for example.
Just run perldoc CPAN to read the man page.
|