X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Flocal%2Flib.pm;h=6c629c1733ee22ba8d37ab60871d11749d6c2acb;hb=9a021b2b54372f72e6c17f3add625c94b2bb5a98;hp=160ff331c7b66f22e13ad94546f0f821b409191c;hpb=480e6e8501e05e94f27dbf839dfdf80e6e70a1f7;p=p5sagit%2Flocal-lib.git diff --git a/lib/local/lib.pm b/lib/local/lib.pm index 160ff33..6c629c1 100644 --- a/lib/local/lib.pm +++ b/lib/local/lib.pm @@ -11,7 +11,7 @@ use File::Path (); use Carp (); use Config; -our $VERSION = '1.003003'; # 1.3.3 +our $VERSION = '1.004001'; # 1.4.1 sub import { my ($class, @args) = @_; @@ -368,6 +368,32 @@ You can also pass --boostrap=~/foo to get a different location - $ echo 'eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)' >>~/.bashrc +If you want to install multiple Perl module environments, say for application evelopment, +install local::lib globally and then: + + $ cd ~/mydir1 + $ perl -Mlocal::lib=./ + $ eval $(perl -Mlocal::lib=./) ### To set the environment for this shell alone + $ printenv ### You will see that ~/mydir1 is in the PERL5LIB + $ perl -MCPAN -e install ... ### whatever modules you want + $ cd ../mydir2 + ... REPEAT ... + +For multiple environments for multiple apps you may need to include a modified version of +the C<< use FindBin >> instructions in the "In code" sample above. If you did something like +the above, you have a set of Perl modules at C<< ~/mydir1/lib >>. If you have a script at +C<< ~/mydir1/scripts/myscript.pl >>, you need to tell it where to find the modules you installed +for it at C<< ~/mydir1/lib >>. + +In C<< ~/mydir1/scripts/myscript.pl >>: + + use strict; + use warnings; + use local::lib "$FindBin::Bin/.."; ### points to ~/mydir1 and local::lib finds lib + use lib "$FindBin::Bin/../lib"; ### points to ~/mydir1/lib + +Put this before any BEGIN { ... } blocks that require the modules you installed. + =head1 DESCRIPTION This module provides a quick, convenient way of bootstrapping a user-local Perl @@ -560,6 +586,22 @@ Should probably auto-fixup CPAN config if not already done. Patches very much welcome for any of the above. +=head1 TROUBLESHOOTING + +If you've configured local::lib to install CPAN modules somewhere in to your +home directory, and at some point later you try to install a module with C, but it fails with an error like: C and buried within the install log is an +error saying C<'INSTALL_BASE' is not a known MakeMaker parameter name>, then +you've somehow lost your updated ExtUtils::MakeMaker module. + +To remedy this situation, rerun the bootstrapping procedure documented above. + +Then, run C + +Finally, re-run C and it should install without problems. + =head1 ENVIRONMENT =over 4 @@ -584,9 +626,18 @@ documentation additions, contributed by Christopher Nehren . '--self-contained' feature contributed by Mark Stosberg . -Doc patches for a custom local::lib patch contributed by Torsten Raudssus +Doc patches for a custom local::lib directory contributed by Torsten Raudssus . +Hans Dieter Pearcey sent in some additional tests for ensuring +things will install properly, submitted a fix for the bug causing problems with +writing Makefiles during bootstrapping, contributed an example program, and +submitted yet another fix to ensure that local::lib can install and bootstrap +properly. Many, many thanks! + +pattern of Freenode IRC contributed the beginnings of the Troubleshooting +section. Many thanks! + =head1 LICENSE This library is free software under the same license as perl itself