Managing Perl Libraries
Contents
Overview
I use local::lib to maintain distinct sets of Perl module environments for multiple applications. It's great because you don't need to mess with multiple CPAN configurations or with tweaking your environment variables to recognize already installed local modules. local::lib handles it all for you.
Installation Script
The following is almost entirely scripted:
wormbase-admin:maintenance/install_perl_modules.sh
Read on for additional (important) details the includes appropriate settings for interactive steps in the script.
local::lib Installation and Configuration
local::lib is installed into the system Perl path:
sudo perl -MCPAN -e install 'local::lib'
Perl Module Locations
3rd party Perl modules are maintained in a common directory:
/usr/local/wormbase/extlib
Within this directory are subdirectories for different versions or applications:
classic/ - The "Classic" WormBase website 2.0/ - The second iteration of the website
Setting your shell to install to the local environments
To set your current shell to use one of the local library do the following:
$ cd /usr/local/wormbase/extlib/2.0 $ perl -Mlocal::lib=./ $ eval $(perl -Mlocal::lib=--self-contained,./) $ printenv // Notice that the local path is now in your PERL5LIB
And install some modules:
$ perl -MCPAN -Mlocal::lib=--self-contained -e 'CPAN::install(MODULE)'
Required Perl modules
WormBase "Clasic"
Install the following Perl modules via CPAN. Note that you DO NOT AND SHOULD NOT be sudo.
cd /usr/local/wormbase/extlib/classic perl -Mlocal::lib=./ eval $(perl -Mlocal::lib=--self-contained,./) perl -MCPAN -e 'CPAN::install(MODULE)'
// Some basics... YAML LWP ExtUtils::MakeMaker Bundle::CPAN // The rest... Bio::Graphics BioPerl // When prompted, choose to download all optional modules. This will also install Ace: Ace // During configuration, choose option (3), then set the remaining variables as follows: Site-specific configuration files: /usr/local/wormbase/website-classic/conf CGI path: /usr/local/wormbase/website-classic/cgi-bin HTML path: /usr/local/wormbase/website-classic/html Change these paths as appropriate for other projects. Cache::Cache Cache::FileCache CGI CGI::Session CGI::Cache CGI::Toggle Class::Base Data::Stag Date::Calc Date::Manip DB_File DBI DBD::mysql (mysql devel package must be installed first) // To build by hand: perl Makefile.PL INSTALL_BASE=/usr/local/wormbase/extlib/classic --testuser=USER --testpassword=PASS make ; make test ; make install Digest::MD5 Flickr::API Flickr::API::Simple // This is a private library cd /usr/local/wormbase/build perl ./Build.PL --install_base /usr/local/wormbase/extlib/classic ./Build install GD GD::SVG GD::Graph GD::Graph::pie HTML::TokeParser IO::Scalar IO::String Image::GD::Thumbnail Log::Log4perl MIME::Lite mod_perl2 // Requires that apache2 already be installed; apxs is at /usr/local/apache2/bin/apxs Net::FTP Proc::Simple Search::Indexer SOAP::Lite Statistics::OLS Storable SVG SVG::Graph Term::ReadKey Test::Pod Text::Shellwords Time::Format WeakRef XML::SAX XML::Parser XML::DOM XML::Writer XML::Twig XML::Simple
Displaying Environment variables
To quickly show a list of handy environment variables, do:
$ cd /usr/local/wormbase/extlib/classic $ perl -Mlocal::lib=./ export MODULEBUILDRC="/usr/local/wormbase/extlib/classic/.modulebuildrc" export PERL_MM_OPT="INSTALL_BASE=/usr/local/wormbase/extlib/classic" export PERL5LIB="/usr/local/wormbase/extlib/classic/lib/perl5:/usr/local/wormbase/extlib/classic/lib/perl5/x86_64-linux-gnu-thread-multi:$PERL5LIB" export PATH="/usr/local/wormbase/extlib/classic/bin:$PATH"
We will use some of these variables for, say, setting up apache.
Optional installation tips
BioPerl
Instead of building BioPerl from CPAN, it might be necessary to build from SVN:
$ cd /usr/local/wormbase/build $ svn co svn+ssh://USERNAME@dev.open-bio.org/home/svn-repositories/bioperl/bioperl-live/trunk bioperl-live $ mv bioperl-live bioperl-live-tharris $ cd bioperl-live-tharris $ perl ./Build.PL install_base /usr/local/wormbase/extlib $ ./Build test $ ./Build install
Installing modules without using local::lib
You may on occasion need to install something without using local::lib. For EUMM modules, use
perl -I/usr/local/wormbase/extlib/[PROJECT] Makefile.PL INSTALL_BASE=/usr/local/wormbase/extlib/[PROJECT]
And for Module::Build
perl -I/usr/local/wormbase/extlib/[PROJECT] Makefile.PL --install_base /usr/local/wormbase/extlib/[PROJECT]
Alternatively, you can manually edit ~/.cpan/CPAN/MyConfig.pm