12.21. Building and Installing a CPAN Module
12.21.1. Problem
You want to install a module file that
you downloaded from CPAN over the Net or obtained from a
CD.
12.21.2. Solution
Type the following commands into your shell. It will build and
install Version 4.54 of the Some::Module package.
% gunzip Some-Module-4.54.tar.gz
% tar xf Some-Module-4.54
% cd Some-Module-4.54
% perl Makefile.PL
% make
% make test
% make install
12.21.3. Discussion
Like most programs on the Net, Perl modules are available in source
kits stored as tar archives in GNU zip
format.[23] If tar warns of
"Directory checksum
errors", then you downloaded the binary file in
text format, mutilating it.
[23]This is not the same as the zip format common
on Windows machines, but newer version of Windows
winzip will read it. Prior to Perl 5.005, you'll
need the standard port of Perl for Win32, not the ActiveState port,
to build CPAN modules. Free versions of tar and
gnutar are also available for Microsoft
systems.
You'll probably have to become a privileged user with adequate
permissions to install the module in the system directories. Standard
modules are installed in a directory like
/usr/lib/perl5, whereas third-party modules are
installed in /usr/lib/perl5/site_ perl.Here's a sample run, showing the installation of the MD5 module:
% gunzip MD5-1.7.tar.gz
% tar xf MD5-1.7.tar
% cd MD5-1.7
% perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for MD5
% make
mkdir ./blib
mkdir ./blib/lib
cp MD5.pm ./blib/lib/MD5.pm
AutoSplitting MD5 (./blib/lib/auto/MD5)
/usr/bin/perl -I/usr/local/lib/perl5/i386 ...
...
cp MD5.bs ./blib/arch/auto/MD5/MD5.bs
chmod 644 ./blib/arch/auto/MD5/MD5.bsmkdir ./blib/man3
Manifying ./blib/man3/MD5.3
% make test
PERL_DL_NONLAZY=1 /usr/bin/perl -I./blib/arch -I./blib/lib
-I/usr/local/lib/perl5/i386-freebsd/5.00404 -I/usr/local/lib/perl5 test.pl
1..14
ok 1
ok 2
...
ok 13
ok 14
% sudo make install
Password:
Installing /usr/local/lib/perl5/site_perl/i386-freebsd/./auto/MD5/
MD5.so
Installing /usr/local/lib/perl5/site_perl/i386-freebsd/./auto/MD5/
MD5.bs
Installing /usr/local/lib/perl5/site_perl/./auto/MD5/autosplit.ix
Installing /usr/local/lib/perl5/site_perl/./MD5.pm
Installing /usr/local/lib/perl5/man/man3/./MD5.3
Writing /usr/local/lib/perl5/site_perl/i386-freebsd/auto/MD5/.packlist
Appending installation info to /usr/local/lib/perl5/i386-freebsd/
5.00404/perllocal.pod
If your system manager isn't around or can't be prevailed upon to run
the installation, don't worry. When you use Perl to generate the
Makefile from template Makefile.PL, you can
specify alternate installation directories.
# if you just want the modules installed in your own directory
% perl Makefile.PL LIB=~/lib
# if you have your own complete distribution
% perl Makefile.PL PREFIX=~/perl5-private
An even simpler approach is to use the CPAN module from the command
line, because it can search for, download, and install the module you
need. Suppose you wanted to find the CPAN module Getopt::Declare. All
you'd have to do is type:
% perl -MCPAN -e "install Getopt::Declare"
The first time you use the CPAN module, it will ask you some
configuration questions. It saves these away so that when you use it
in the future, it won't need to ask you those questions again.The CPAN module also supports an interactive command shell. This can
be used to search for modules whose precise names you're uncertain
of, check which CPAN modules have newer versions than you have
installed, install bundles of related modules, and various other
useful commands.Here's an example run of the interactive shell.
% perl -MCPAN -e shell
cpan shell -- CPAN exploration and modules installation (v1.70)
ReadLine support enabled
cpan> h
Display Information
command argument description
a,b,d,m WORD or /REGEXP/ about authors, bundles, distributions, modules
i WORD or /REGEXP/ about anything of above
r NONE reinstall recommendations
ls AUTHOR about files in the author's directory
Download, Test, Make, Install...
get download
make make (implies get)
test MODULES, make test (implies make)
install DISTS, BUNDLES make install (implies test)
clean make clean
look open subshell in these dists' directories
readme display these dists' README files
Other
h,? display this menu ! perl-code eval a perl command
o conf [opt] set and query options q quit the cpan shell
reload cpan load CPAN.pm again reload index load newer indices
autobundle Snapshot force cmd unconditionally do cmd
cpan> i /inflect/
CPAN: Storable loaded ok
Going to read /home/tchrist/.cpan/Metadata
Database was generated on Mon, 07 Apr 2003 22:42:33 GMT
Distribution D/DC/DCONWAY/Lingua-EN-Inflect-1.88.tar.gz
Module Lingua::EN::Inflect (D/DC/DCONWAY/Lingua-EN-Inflect-1.88.tar.gz)
2 items found
cpan> install Lingua::EN::Inflect
[build and install output deleted]
cpan> quit
The CPAN
module is slowly being phased out in favor of CPANPLUS, a module with
similar functionality that is built for flexibility as well as power.
The CPANPLUS text interface is similar to that of the CPAN module,
but it also offers a GUI and programmer interfaces, which can access
a lot of functionality that the CPAN module hides.
12.21.4. See Also
The documentation for the standard ExtUtils::MakeMaker module; the
INSTALL file in the Perl source distribution for information on
building a statically linked perl
binary