Perl 5


Your Virtual Server has both the Perl4 (
#!/usr/bin/perl) and Perl5 (#!/usr/local/bin/perl) binaries already installed. If you require the use of the Perl5 Standard Libraries or other Perl5 modules, you will need to install these into a local directory on your Virtual Server.

Installing the Perl5 Standard Libraries
Connect to your Virtual Server via Telnet or SSH and run the following commands that match your Virtual Server O/S.

NOTE: If your Virtual Server is running the FreeBSD O/S you should already have the Perl5 Standard Libraries installed at ~/usr/local/lib/perl5. If not, or if you wish to re-install them, follow the directions below.

The Perl5 Standard Libraries for FreeBSD do not count toward your Virtual Server disk space quota. The libraries for BSD/OS require aproximately 11 MB of disk space.

If your Virtual Server was ordered after Nov 22, 1999, you are likely running FreeBSD. To find out which O/S your Virtual Server is running, use the uname command:

% uname
FreeBSD
% vinstall perl5  
BSD/OS
% cd
% tar xvf /usr/local/contrib/perl5.tar  

Removing the Perl5 Standard Libraries
If you would like to remove the Perl5 Standard Libraries you may do so by running the following commands that match your Virtual Server O/S.

FreeBSD
% vrmperl  
BSD/OS
% rm -rf ~/usr/local/lib/perl5  

Installing Your Own Perl5 Modules
We have created an easy way for you to install a group of commonly requested Perl5 modules on your Virtual Server. This group of modules include:

CPAN
CGI
LWP
DBI
DBD::mysql
DBD::mSQL
DBD::Pg
Pg
MIME::Base64

To install all of these modules, do the following:

FreeBSD
% vinstall perlpac1

If you require a module that is not included in perlpac1 or the Perl5 Standard Libraries, you may be able use the vcpan utility to install it. The vcpan utility is a wrapper around the perl5 -MCPAN -e shell command that automates module download and installation. To launch vcpan into interactive mode, do the following.

FreeBSD
% vcpan

To access the vcpan online help, do this:

FreeBSD
% vcpan -h

For more information and instructions about Perl5 module installation, refer the following informations

 

 
Installing your own Perl5 modules


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.


The content on this page was adapted from Answers to some Bothering Questions (Perl + Perl/CGI Mini FAQ) Perl/CGI Mini FAQ) and was orignally authored by Bekman Stas.

 

 


HOME