http://qs321.pair.com?node_id=177793


in reply to installing local modules

Just to add to what dimmesdale has said...
If you want to install a module somewhere other than the default location, use

perl Makefile.pl PREFIX=/where/to/install/

in place of

perl Makefile.pl

Update: You might also find tachyon's tutorial helpful.

Replies are listed 'Best First'.
Re: Re: installing local modules
by TGI (Parson) on Jun 28, 2002 at 00:49 UTC

    I've found that PREFIX alone is sometimes not enough. HTML::Mason, for example, would not install for me without all the added info. Here's the setup I use when I run perl Makefile.PL:

    PREFIX=/home/tgi/usr/local \ INSTALLPRIVLIB=/home/tgi/usr/local/lib/perl5 \ INSTALLSCRIPT=/home/tgi/usr/local/bin \ INSTALLSITELIB=/home/tgi/usr/local/lib/perl5/site_perl \ INSTALLBIN=/usr/home/tgi/usr/local/bin \ INSTALLMAN1DIR=/home/tgi/usr/local/lib/perl5/man \ INSTALLMAN3DIR=/home/tgi/usr/local/lib/perl5/man/man3

    I have this saved in a file called popt (for perl options) and I just issue the command perl Makefile.PL `cat ~/popt`. I like to recreate the /usr hierarchy of a traditional perl installation, but that is not necessary.

    To add modules to your search path you have a couple of options. You may be able to modify the enviroment on your server through an .htaccess file (if you are on an apache based system). On a mod_perl enabled server, you can use PerlSetEnv PERL5LIB /path/to/private/libraries/. Otherwise you are likely to be stuck adding a use lib qw(/path/to/modules /ya/path/to/modules); to each script.


    TGI says moo

      I do something similar in scripts that automate module installation. However, I use a longer list of variables:
      $makefile_args =
        " INSTALLPRIVLIB=$prefix/usr/lib/perl5/5.6.0 " .
        " INSTALLARCHLIB=$prefix/usr/lib/perl5/5.6.0/i386-linux " .
        " INSTALLSITELIB=$prefix/usr/lib/perl5/site_perl/5.6.0 " .
        " INSTALLSITEARCH=$prefix/usr/lib/perl5/site_perl/5.6.0/i386-linux " .
        " INSTALLBIN=$prefix/usr/bin " .
        " INSTALLSCRIPT=$prefix/usr/bin " .
        " INSTALLMAN1DIR=$prefix/usr/share/man/man1 " .
        " INSTALLMAN3DIR=$prefix/usr/share/man/man3 ";
      
      
      All I do is set the $prefix. Voila! Modules where we want 'em!