Installing The Perl Interpreter on Linux

Download the latest Perl source tar file from http://ftp.funet.fi/pub/CPAN/src/. Make sure you get the source files for a stable release (the last digit in the release number will be even, e.g. 5.8.8). Untar the tar file in the top level source directory (e.g. /rpm/perl):

     tar -xvzf perl-m.n.xx.tar.gz

The tar command will create a new directory for the m.n.xx version of Perl. Switch to that directory and begin configuring Perl:

     sh Configure

Or, if you are starting over with a preexisting build, restart the configuration process by doing:

     rm -f config.sh Policy.sh
     sh Configure

The configuration script will ask you a lot of questions. Many of them are about where it should put things. Here are some hints:

     Top-level directory: /usr/lib/perl5/m.n.xx
     Site directory: /usr/lib/perl5/site_perl/m.n.xx
     Vendor directory: /usr/lib/perl5/vendor_perl/m.n.xx
     HTML docs: /usr/share/doc/perl-m.n.xx
     Manuals (mistakenly called POD source): /usr/share/man
     Binaries and scripts: /usr/bin

You may have to hack the generated config.sh at the end of the configuration process to make sure that it is correct. Despite my picking path names like these during configuration, it still got them wrong. Couldn't hurt to check.

Once configure is done, make and test the Perl interpreter:

     make
     make test

If all the tests are passed, switch to super-duper user and install Perl:

     su
     make install

If you'll want to use the Perl documentation from a Web browser, you need to build the HTML files from the POD files. Note that this step does not read the destination directories from the config file, despite they're being in there:

     ./installhtml --podroot=. --podpath=lib:ext:pod:vms --recurse
          --htmldir=/usr/share/doc/perl-m.n.xx --htmlroot=/doc/perl-m.n.xx
          --splithead=pod/perlipc --splititem=pod/perlfunc
          --libpods=perlfunc:perlguts:perlvar:perlrun:perlop --verbose

This command assumes that you have an HTML directory named /doc that actually points to /usr/share/doc. If your httpd.conf file has some other definition for the /doc directory, you'll need to use that instead.