X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Flocal%2Flib.pm;h=ceee4aa234bd0acc46b2ea1e30dd3dbcfac3de28;hb=7039d36e721a93a8c4ac906b12aff5a79ae54a38;hp=08b5533c7a4bfb3bf85ceeed42c0d9e35a888fdc;hpb=6a9fd065cd02abf2d1f92b9333aab075d01fa6fc;p=p5sagit%2Flocal-lib.git diff --git a/lib/local/lib.pm b/lib/local/lib.pm index 08b5533..ceee4aa 100644 --- a/lib/local/lib.pm +++ b/lib/local/lib.pm @@ -8,7 +8,7 @@ use 5.006; use File::Spec (); use Config; -our $VERSION = '1.008026'; # 1.8.26 +our $VERSION = '2.000_000'; # 2.0.0 $VERSION = eval $VERSION; sub import { @@ -654,6 +654,10 @@ From the shell - export PERL5LIB="/home/username/perl5/lib/perl5" export PATH="/home/username/perl5/bin:$PATH" +From a .bashrc file - + + [ $SHLVL -eq 1 ] && eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)" + =head2 The bootstrapping technique A typical way to install local::lib is using what is known as the @@ -670,12 +674,18 @@ By default local::lib installs itself and the CPAN modules into ~/perl5. Windows users must also see L. -1. Download and unpack the local::lib tarball from CPAN (search for "Download" +=over 4 + +=item 1. + +Download and unpack the local::lib tarball from CPAN (search for "Download" on the CPAN page about local::lib). Do this as an ordinary user, not as root or administrator. Unpack the file in your home directory or in any other convenient location. -2. Run this: +=item 2. + +Run this: perl Makefile.PL --bootstrap @@ -687,16 +697,20 @@ to specify the name of the directory when you call bootstrap, as follows: perl Makefile.PL --bootstrap=~/foo -3. Run this: (local::lib assumes you have make installed on your system) +=item 3. + +Run this: (local::lib assumes you have make installed on your system) make test && make install -4. Now we need to setup the appropriate environment variables, so that Perl +=item 4. + +Now we need to setup the appropriate environment variables, so that Perl starts using our newly generated lib/ directory. If you are using bash or any other Bourne shells, you can add this to your shell startup script this way: - echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >>~/.bashrc + echo '[ $SHLVL -eq 1 ] && eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' >>~/.bashrc If you are using C shell, you can do this as follows: @@ -709,12 +723,14 @@ If you passed to bootstrap a directory other than default, you also need to give that as import parameter to the call of the local::lib module like this way: - echo 'eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)' >>~/.bashrc + echo '[ $SHLVL -eq 1 ] && eval "$(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)"' >>~/.bashrc After writing your shell configuration file, be sure to re-read it to get the changed settings into your current shell's environment. Bourne shells use C<. ~/.bashrc> for this, whereas C shells use C. +=back + If you're on a slower machine, or are operating under draconian disk space limitations, you can disable the automatic generation of manpages from POD when installing modules by using the C<--no-manpages> argument when bootstrapping: @@ -734,6 +750,12 @@ installation to install modules in different directories directly this way: cd ../mydir2 ... REPEAT ... +When used in a C<.bashrc> file, it is recommended that you protect against +re-activating a directory in a sub-shell. This can be done by checking the +C<$SHLVL> variable as shown in synopsis. Without this, sub-shells created by +the user or other programs will override changes made to the parent shell's +environment. + If you are working with several C environments, you may want to remove some of them from the current environment without disturbing the others. You can deactivate one environment like this (using bourne sh): @@ -792,7 +814,7 @@ and the subdirectories are created. =head3 PowerShell -local::lib also supports PowerShell, and an be used with the +local::lib also supports PowerShell, and can be used with the C cmdlet. Invoke-Expression "$(perl -Mlocal::lib)" @@ -1338,9 +1360,12 @@ environment later on contributed by Andrew Rodland . Patch for Carp version mismatch contributed by Hakim Cassimally . +Rewrite of internals and numerous bug fixes and added features contributed by +Graham Knop . + =head1 COPYRIGHT -Copyright (c) 2007 - 2010 the local::lib L and L as +Copyright (c) 2007 - 2013 the local::lib L and L as listed above. =head1 LICENSE