Installing Your Own Perl 5 Modules
| NOTE:
The Perl 5 module that you wish to install may be included in
our pre-packaged distribution or
may be installable using the vcpan
utility. Both of these methods are preferable to those detailed
below. See the Perl documentation for more details. |
Installing
Perl 5 modules yourself on your Virtual Server can be a tricky exercise.
Utilities for installing additional Perl 5 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 Perl 5 modules within your
Virtual Server file system.
Installing Perl 5
Modules
Normally, the perl 5 module installation procedure includes commands something
like these:
% perl 5 Makefile.PL
% make
% make test
% make install
% make clean
The first command, perl
5 Makefile.PL, directs perl 5 to create a makefile
for the new module you are installing. When installing a Perl 5 module you
must designate on the command line the home directory of your perl 5 installation.
That information is used by perl 5 to create the makefile. Substitute the
following command for Perl 5 Makefile.PL:
% perl 5 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:
% perl 5 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//usr/local \
INSTALLPRIVLIB=/usr/home//usr/local/lib/perl5 \
INSTALLSCRIPT=/usr/home//usr/local/bin \
INSTALLSITELIB=/usr/home//usr/local/lib/perl5/site_perl \
INSTALLBIN=/usr/home//usr/local/bin \
INSTALLMAN1DIR=/usr/home//usr/local/lib/perl5/man \
INSTALLMAN3DIR=/usr/home//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//usr/local \
INSTALLPRIVLIB=/usr/home//usr/local/lib/perl5 \
INSTALLSCRIPT=/usr/home//usr/local/bin \
INSTALLSITELIB=/usr/home//usr/local/lib/perl5/site_perl \
INSTALLBIN=/usr/home//usr/local/bin \
INSTALLMAN1DIR=/usr/home//usr/local/lib/perl5/man \
INSTALLMAN3DIR=/usr/home//usr/local/lib/perl5/man/man3
Then, each time you install a Perl 5 module you can use the following syntax:
% perl 5 Makefile.PL
'cat <filename>'
% make
% make test
% make install
% make clean
You also can have a few different local modules installation procedures,
for example one for production perl and another for development:
% perl 5 Makefile.PL
'cat <filename>.production
or
% perl 5 Makefile.PL
'cat <filename>.development'
Making Scripts Find
the Modules you have Installed
When you install Perl 5 on your Virtual
Server, all pre-installed modules are installed into these 4 directories
(depending on which version of perl 5 you are installing):
/usr/lib/perl5
/usr/lib/perl5/i386-bsdos/5.00X
/usr/lib/perl5/site_perl/i386-bsdos
/usr/lib/perl5/site_perl
These 4 directories are already preset in the perl 5's @INC array.
That array contains the paths that Perl 5 searches in order to find modules.
If you install Perl 5 modules locally as described above, you will need
to append these two directories, which are in 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);
}
The use lib
construct, however, 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. (Locally here means
'within your Virtual Server file system' rather than the root file system
of the host machine.) Perl 5 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
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.
Once the CPAN.pm module
is installed, you can use it to install other modules.
When you initially run the following 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//usr/local
and this one:
Parameters for the 'make install' command? [] INSTALLMAN3DIR=/usr/home//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:
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:
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. To learn
more about the CPAN.pm module, read the manual: