Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / local::lib.3pm
diff --git a/local-lib5/man/man3/local::lib.3pm b/local-lib5/man/man3/local::lib.3pm
new file mode 100644 (file)
index 0000000..c5d11c2
--- /dev/null
@@ -0,0 +1,560 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  | will give a
+.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "local::lib 3"
+.TH local::lib 3 "2009-11-08" "perl v5.8.7" "User Contributed Perl Documentation"
+.SH "NAME"
+local::lib \- create and use a local lib/ for perl modules with PERL5LIB
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+In code \-
+.PP
+.Vb 1
+\&  use local::lib; # sets up a local lib at ~/perl5
+.Ve
+.PP
+.Vb 1
+\&  use local::lib '~/foo'; # same, but ~/foo
+.Ve
+.PP
+.Vb 3
+\&  # Or...
+\&  use FindBin;
+\&  use local::lib "$FindBin::Bin/../support";  # app\-local support library
+.Ve
+.PP
+From the shell \-
+.PP
+.Vb 2
+\&  # Install LWP and it's missing dependencies to the 'my_lwp' directory
+\&  perl \-MCPAN \-Mlocal::lib=my_lwp \-e 'CPAN::install(LWP)'
+.Ve
+.PP
+.Vb 2
+\&  # Install LWP and *all non\-core* dependencies to the 'my_lwp' directory 
+\&  perl \-MCPAN \-Mlocal::lib=\-\-self\-contained,my_lwp \-e 'CPAN::install(LWP)'
+.Ve
+.PP
+.Vb 6
+\&  # Just print out useful shell commands
+\&  $ perl \-Mlocal::lib
+\&  export MODULEBUILDRC=/home/username/perl/.modulebuildrc
+\&  export PERL_MM_OPT='INSTALL_BASE=/home/username/perl'
+\&  export PERL5LIB='/home/username/perl/lib/perl5:/home/username/perl/lib/perl5/i386\-linux'
+\&  export PATH="/home/username/perl/bin:$PATH"
+.Ve
+.Sh "The bootstrapping technique"
+.IX Subsection "The bootstrapping technique"
+A typical way to install local::lib is using what is known as the
+\&\*(L"bootstrapping\*(R" technique.  You would do this if your system administrator
+hasn't already installed local::lib.  In this case, you'll need to install
+local::lib in your home directory.
+.PP
+1. Download and unpack the local::lib tarball from \s-1CPAN\s0 (search for \*(L"Download\*(R"
+on the \s-1CPAN\s0 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.
+.PP
+2. Run this:
+.PP
+.Vb 1
+\&  perl Makefile.PL \-\-bootstrap
+.Ve
+.PP
+If the system asks you whether it should automatically configure as much
+as possible, you would typically answer yes.
+.PP
+3. Run this:
+.PP
+.Vb 1
+\&  make test && make install
+.Ve
+.PP
+4. Arrange for Perl to use your own packages instead of the system
+packages.  If you are using bash, you can do this as follows:
+.PP
+.Vb 1
+\&  echo 'eval $(perl \-I$HOME/perl5/lib/perl5 \-Mlocal::lib)' >>~/.bashrc
+.Ve
+.PP
+If you are using C shell, you can do this as follows:
+.PP
+.Vb 4
+\&  /bin/csh
+\&  echo $SHELL
+\&  /bin/csh
+\&  perl \-I$HOME/perl5/lib/perl5 \-Mlocal::lib >> ~/.cshrc
+.Ve
+.PP
+You can also pass \-\-bootstrap=~/foo to get a different location \-
+.PP
+.Vb 2
+\&  perl Makefile.PL \-\-bootstrap=~/foo
+\&  make test && make install
+.Ve
+.PP
+.Vb 1
+\&  echo 'eval $(perl \-I$HOME/foo/lib/perl5 \-Mlocal::lib=$HOME/foo)' >>~/.bashrc
+.Ve
+.PP
+After writing your shell configuration file, be sure to re-read it to get the
+changed settings into your current shell's environment.
+.PP
+.Vb 1
+\&  . ~/.bashrc
+.Ve
+.PP
+If you are using C shell, you can do this as follows:
+.PP
+.Vb 4
+\&  /bin/csh
+\&  echo $SHELL
+\&  /bin/csh
+\&  perl \-I$HOME/perl5/lib/perl5 \-Mlocal::lib >> ~/.cshrc
+.Ve
+.PP
+.Vb 1
+\&  source ~/.cshrc
+.Ve
+.PP
+You can also pass \-\-bootstrap=~/foo to get a different location \-
+.PP
+.Vb 2
+\&  perl Makefile.PL \-\-bootstrap=~/foo
+\&  make test && make install
+.Ve
+.PP
+.Vb 1
+\&  echo 'eval $(perl \-I$HOME/foo/lib/perl5 \-Mlocal::lib=$HOME/foo)' >> ~/.bashrc
+.Ve
+.PP
+.Vb 1
+\&  . ~/.bashrc
+.Ve
+.PP
+If you're on a slower machine, or are operating under draconian disk space
+limitations, you can disable the automatic generation of manpages from \s-1POD\s0 when
+installing modules by using the \f(CW\*(C`\-\-no\-manpages\*(C'\fR argument when bootstrapping:
+.PP
+.Vb 1
+\&  perl Makefile.PL \-\-bootstrap \-\-no\-manpages
+.Ve
+.PP
+If you want to install multiple Perl module environments, say for application evelopment, 
+install local::lib globally and then:
+.PP
+.Vb 7
+\&  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 ...
+.Ve
+.PP
+For multiple environments for multiple apps you may need to include a modified
+version of the \f(CW\*(C`use FindBin\*(C'\fR instructions in the \*(L"In code\*(R" sample above.
+If you did something like the above, you have a set of Perl modules at \f(CW\*(C`~/mydir1/lib\*(C'\fR. If you have a script at \f(CW\*(C`~/mydir1/scripts/myscript.pl\*(C'\fR,
+you need to tell it where to find the modules you installed for it at \f(CW\*(C`~/mydir1/lib\*(C'\fR.
+.PP
+In \f(CW\*(C`~/mydir1/scripts/myscript.pl\*(C'\fR:
+.PP
+.Vb 4
+\&  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
+.Ve
+.PP
+Put this before any \s-1BEGIN\s0 { ... } blocks that require the modules you installed.
+.Sh "Differences when using this module under Win32"
+.IX Subsection "Differences when using this module under Win32"
+.Vb 5
+\&  C:\e>perl \-Mlocal::lib
+\&  set MODULEBUILDRC=C:\eDOCUME~1\eADMINI~1\eperl5\e.modulebuildrc
+\&  set PERL_MM_OPT=INSTALL_BASE=C:\eDOCUME~1\eADMINI~1\eperl5
+\&  set PERL5LIB=C:\eDOCUME~1\eADMINI~1\eperl5\elib\eperl5;C:\eDOCUME~1\eADMINI~1\eperl5\elib\eperl5\eMSWin32\-x86\-multi\-thread
+\&  set PATH=C:\eDOCUME~1\eADMINI~1\eperl5\ebin;%PATH%
+.Ve
+.PP
+.Vb 3
+\&    ### To set the environment for this shell alone
+\&  C:\e>perl \-Mlocal::lib > %TEMP%\etmp.bat && %TEMP%\etmp.bat && del %TEMP%\etemp.bat
+\&  ### instead of $(perl \-Mlocal::lib=./)
+.Ve
+.PP
+If you want the environment entries to persist, you'll need to add then to the
+Control Panel's System applet yourself at the moment.
+.PP
+The \*(L"~\*(R" is translated to the user's profile directory (the directory named for
+the user under \*(L"Documents and Settings\*(R" (Windows \s-1XP\s0 or earlier) or \*(L"Users\*(R"
+(Windows Vista or later) unless \f(CW$ENV\fR{\s-1HOME\s0} exists. After that, the home
+directory is translated to a short name (which means the directory must exist)
+and the subdirectories are created.
+.SH "RATIONALE"
+.IX Header "RATIONALE"
+The version of a Perl package on your machine is not always the version you
+need.  Obviously, the best thing to do would be to update to the version you
+need.  However, you might be in a situation where you're prevented from doing
+this.  Perhaps you don't have system administrator privileges; or perhaps you
+are using a package management system such as Debian, and nobody has yet gotten
+around to packaging up the version you need.
+.PP
+local::lib solves this problem by allowing you to create your own directory of
+Perl packages downloaded from \s-1CPAN\s0 (in a multi-user system, this would typically
+be within your own home directory).  The existing system Perl installation is
+not affected; you simply invoke Perl with special options so that Perl uses the
+packages in your own local package directory rather than the system packages.
+local::lib arranges things so that your locally installed version of the Perl
+packages takes precedence over the system installation.
+.PP
+If you are using a package management system (such as Debian), you don't need to
+worry about Debian and \s-1CPAN\s0 stepping on each other's toes.  Your local version
+of the packages will be written to an entirely separate directory from those
+installed by Debian.  
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This module provides a quick, convenient way of bootstrapping a user-local Perl
+module library located within the user's home directory. It also constructs and
+prints out for the user the list of environment variables using the syntax
+appropriate for the user's current shell (as specified by the \f(CW\*(C`SHELL\*(C'\fR
+environment variable), suitable for directly adding to one's shell
+configuration file.
+.PP
+More generally, local::lib allows for the bootstrapping and usage of a
+directory containing Perl modules outside of Perl's \f(CW@INC\fR. This makes it
+easier to ship an application with an app-specific copy of a Perl module, or
+collection of modules. Useful in cases like when an upstream maintainer hasn't
+applied a patch to a module of theirs that you need for your application.
+.PP
+On import, local::lib sets the following environment variables to appropriate
+values:
+.IP "\s-1MODULEBUILDRC\s0" 4
+.IX Item "MODULEBUILDRC"
+.PD 0
+.IP "\s-1PERL_MM_OPT\s0" 4
+.IX Item "PERL_MM_OPT"
+.IP "\s-1PERL5LIB\s0" 4
+.IX Item "PERL5LIB"
+.IP "\s-1PATH\s0" 4
+.IX Item "PATH"
+.PD
+\&\s-1PATH\s0 is appended to, rather than clobbered.
+.PP
+These values are then available for reference by any code after import.
+.SH "METHODS"
+.IX Header "METHODS"
+.Sh "ensure_directory_structure_for"
+.IX Subsection "ensure_directory_structure_for"
+.IP "Arguments: path" 4
+.IX Item "Arguments: path"
+.PP
+Attempts to create the given path, and all required parent directories. Throws
+an exception on failure.
+.Sh "print_environment_vars_for"
+.IX Subsection "print_environment_vars_for"
+.IP "Arguments: path" 4
+.IX Item "Arguments: path"
+.PP
+Prints to standard output the variables listed above, properly set to use the
+given path as the base directory.
+.Sh "setup_env_hash_for"
+.IX Subsection "setup_env_hash_for"
+.IP "Arguments: path" 4
+.IX Item "Arguments: path"
+.PP
+Constructs the \f(CW%ENV\fR keys for the given path, by calling
+\&\f(CW\*(C`build_environment_vars_for\*(C'\fR.
+.Sh "install_base_perl_path"
+.IX Subsection "install_base_perl_path"
+.IP "Arguments: path" 4
+.IX Item "Arguments: path"
+.PP
+Returns a path describing where to install the Perl modules for this local
+library installation. Appends the directories \f(CW\*(C`lib\*(C'\fR and \f(CW\*(C`perl5\*(C'\fR to the given
+path.
+.Sh "install_base_arch_path"
+.IX Subsection "install_base_arch_path"
+.IP "Arguments: path" 4
+.IX Item "Arguments: path"
+.PP
+Returns a path describing where to install the architecture-specific Perl
+modules for this local library installation. Based on the
+\&\*(L"install_base_perl_path\*(R" method's return value, and appends the value of
+\&\f(CW$Config{archname}\fR.
+.Sh "install_base_bin_path"
+.IX Subsection "install_base_bin_path"
+.IP "Arguments: path" 4
+.IX Item "Arguments: path"
+.PP
+Returns a path describing where to install the executable programs for this
+local library installation. Based on the \*(L"install_base_perl_path\*(R" method's
+return value, and appends the directory \f(CW\*(C`bin\*(C'\fR.
+.Sh "modulebuildrc_path"
+.IX Subsection "modulebuildrc_path"
+.IP "Arguments: path" 4
+.IX Item "Arguments: path"
+.PP
+Returns a path describing where to install the \f(CW\*(C`.modulebuildrc\*(C'\fR file, based on
+the given path.
+.Sh "resolve_empty_path"
+.IX Subsection "resolve_empty_path"
+.IP "Arguments: path" 4
+.IX Item "Arguments: path"
+.PP
+Builds and returns the base path into which to set up the local module
+installation. Defaults to \f(CW\*(C`~/perl5\*(C'\fR.
+.Sh "resolve_home_path"
+.IX Subsection "resolve_home_path"
+.IP "Arguments: path" 4
+.IX Item "Arguments: path"
+.PP
+Attempts to find the user's home directory. If installed, uses \f(CW\*(C`File::HomeDir\*(C'\fR
+for this purpose. If no definite answer is available, throws an exception.
+.Sh "resolve_relative_path"
+.IX Subsection "resolve_relative_path"
+.IP "Arguments: path" 4
+.IX Item "Arguments: path"
+.PP
+Translates the given path into an absolute path.
+.Sh "resolve_path"
+.IX Subsection "resolve_path"
+.IP "Arguments: path" 4
+.IX Item "Arguments: path"
+.PP
+Calls the following in a pipeline, passing the result from the previous to the
+next, in an attempt to find where to configure the environment for a local
+library installation: \*(L"resolve_empty_path\*(R", \*(L"resolve_home_path\*(R",
+\&\*(L"resolve_relative_path\*(R". Passes the given path argument to
+\&\*(L"resolve_empty_path\*(R" which then returns a result that is passed to
+\&\*(L"resolve_home_path\*(R", which then has its result passed to
+\&\*(L"resolve_relative_path\*(R". The result of this final call is returned from
+\&\*(L"resolve_path\*(R".
+.SH "A WARNING ABOUT UNINST=1"
+.IX Header "A WARNING ABOUT UNINST=1"
+Be careful about using local::lib in combination with \*(L"make install UNINST=1\*(R".
+The idea of this feature is that will uninstall an old version of a module
+before installing a new one. However it lacks a safety check that the old
+version and the new version will go in the same directory. Used in combination
+with local::lib, you can potentially delete a globally accessible version of a
+module while installing the new version in a local place. Only combine \*(L"make
+install UNINST=1\*(R" and local::lib if you understand these possible consequences.
+.SH "LIMITATIONS"
+.IX Header "LIMITATIONS"
+Rather basic shell detection. Right now anything with csh in its name is
+assumed to be a C shell or something compatible, and everything else is assumed
+to be Bourne, except on Win32 systems. If the \f(CW\*(C`SHELL\*(C'\fR environment variable is
+not set, a Bourne-compatible shell is assumed.
+.PP
+Bootstrap is a hack and will use \s-1CPAN\s0.pm for ExtUtils::MakeMaker even if you
+have \s-1CPANPLUS\s0 installed.
+.PP
+Kills any existing \s-1PERL5LIB\s0, \s-1PERL_MM_OPT\s0 or \s-1MODULEBUILDRC\s0.
+.PP
+Should probably auto-fixup \s-1CPAN\s0 config if not already done.
+.PP
+Patches very much welcome for any of the above.
+.PP
+On Win32 systems, does not have a way to write the created environment variables
+to the registry, so that they can persist through a reboot.
+.SH "TROUBLESHOOTING"
+.IX Header "TROUBLESHOOTING"
+If you've configured local::lib to install \s-1CPAN\s0 modules somewhere in to your
+home directory, and at some point later you try to install a module with \f(CW\*(C`cpan
+\&\-i Foo::Bar\*(C'\fR, but it fails with an error like: \f(CW\*(C`Warning: You do not have
+permissions to install into /usr/lib64/perl5/site_perl/5.8.8/x86_64\-linux at
+/usr/lib64/perl5/5.8.8/Foo/Bar.pm\*(C'\fR and buried within the install log is an
+error saying \f(CW\*(C`'INSTALL_BASE' is not a known MakeMaker parameter name\*(C'\fR, then
+you've somehow lost your updated ExtUtils::MakeMaker module.
+.PP
+To remedy this situation, rerun the bootstrapping procedure documented above.
+.PP
+Then, run \f(CW\*(C`rm \-r ~/.cpan/build/Foo\-Bar*\*(C'\fR
+.PP
+Finally, re-run \f(CW\*(C`cpan \-i Foo::Bar\*(C'\fR and it should install without problems.
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+.IP "\s-1SHELL\s0" 4
+.IX Item "SHELL"
+.PD 0
+.IP "\s-1COMSPEC\s0" 4
+.IX Item "COMSPEC"
+.PD
+local::lib looks at the user's \f(CW\*(C`SHELL\*(C'\fR environment variable when printing out
+commands to add to the shell configuration file.
+.Sp
+On Win32 systems, \f(CW\*(C`COMSPEC\*(C'\fR is also examined.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Matt S Trout <mst@shadowcat.co.uk> http://www.shadowcat.co.uk/
+.PP
+auto_install fixes kindly sponsored by http://www.takkle.com/
+.SH "CONTRIBUTORS"
+.IX Header "CONTRIBUTORS"
+Chris Nehren <apeiron@cpan.org> now oversees maintenance of local::lib, in
+addition to providing doc patches and bootstrap fixes to prevent users from
+shooting themselves in the foot (it's more likely than you think).
+.PP
+Patches to correctly output commands for csh style shells, as well as some
+documentation additions, contributed by Christopher Nehren <apeiron@cpan.org>.
+.PP
+\&'\-\-self\-contained' feature contributed by Mark Stosberg <mark@summersault.com>.
+.PP
+Ability to pass '\-\-self\-contained' without a directory inspired by frew on
+irc.perl.org/#catalyst.
+.PP
+Doc patches for a custom local::lib directory contributed by Torsten Raudssus
+<torsten@raudssus.de>.
+.PP
+Hans Dieter Pearcey <hdp@cpan.org> 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!
+.PP
+pattern of Freenode \s-1IRC\s0 contributed the beginnings of the Troubleshooting
+section. Many thanks!
+.PP
+Patch to add Win32 support contributed by Curtis Jewell <csjewell@cpan.org>.
+.PP
+kgish/#perl\-help@irc.perl.org suggested revamping the section on sourcing the
+shell file to make it clearer to those quickly reading the \s-1POD\s0.
+.PP
+t0m and chrisa on #local\-lib@irc.perl.org pointed out a \s-1PERL5LIB\s0 ordering issue
+with \f(CW\*(C`\-\-self\-contained\*(C'\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 2007 \- 2009 the local::lib \*(L"\s-1AUTHOR\s0\*(R" and \*(L"\s-1CONTRIBUTORS\s0\*(R" as
+listed above.
+.SH "LICENSE"
+.IX Header "LICENSE"
+This library is free software and may be distributed under the same terms
+as perl itself.