Clean up CPAN.pm's environment variable the same way we do for CPANPLUS. Add an
apeiron [Fri, 22 May 2009 01:21:33 +0000 (01:21 +0000)]
example program showing local::lib employed programmatically (confound).
Add the beginnings of a troubleshooting section (pattern).

git-svn-id: http://dev.catalyst.perl.org/repos/bast/local-lib/1.000/trunk@6365 bd8105ee-0ff8-0310-8827-fb3f25b6796d

Changes
Makefile.PL
eg/scripted_install.pl [new file with mode: 0644]
lib/local/lib.pm

diff --git a/Changes b/Changes
index fbe6031..2efe8eb 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,12 @@
 Revision history for local::lib
 
+1.004001 2009-05-21
+        - Clean up CPAN.pm's environment variable the same way we do for
+          CPANPLUS. Add an example program showing local::lib employed
+          programmatically (confound).
+
+        - Add the beginnings of a troubleshooting section (pattern).
+
 1.004000 2009-05-14
         - Don't allow dangerous settings for CPAN.pm that affect where CPAN
           installs stuff, as this conflicts with what we're trying to do.
index 2714a0d..7575db0 100644 (file)
@@ -107,8 +107,10 @@ requires 'CPAN' => '1.80'; # sudo support
 # without this beautiful hack
 
 my $no_cpanplus_env = !exists $ENV{PERL5_CPANPLUS_IS_RUNNING};
+my $no_cpan_env = !exists $ENV{PERL5_CPAN_IS_RUNNING};
 require CPAN;
 delete $ENV{PERL5_CPANPLUS_IS_RUNNING} if $no_cpanplus_env;
+delete $ENV{PERL5_CPAN_IS_RUNNING} if $no_cpan_env;
 
 # and make sure that the user doesn't have any existing CPAN config that'll
 # cause us problems for the next few steps.
diff --git a/eg/scripted_install.pl b/eg/scripted_install.pl
new file mode 100644 (file)
index 0000000..b62c865
--- /dev/null
@@ -0,0 +1,19 @@
+#!/usr/bin/perl\r
+# contributed by hdp@cpan.org\r
+\r
+use strict;\r
+use warnings;\r
+use CPAN;\r
+use Cwd;\r
+use File::Spec;\r
+my $target = Cwd::abs_path($ENV{TARGET})\r
+  or die "set \$ENV{TARGET} to your desired local::lib dir\n";\r
+\r
+my $mod = CPAN::Shell->expand(Module => "local::lib");\r
+$mod->get;\r
+my $dir = CPAN::Shell->expand(Distribution => $mod->cpan_file)->dir;\r
+chdir($dir);\r
+my $make = $CPAN::Config->{make};\r
+system($^X, 'Makefile.PL',"--bootstrap=$target") && exit 1;\r
+system($make, 'test') && exit 1;\r
+system($make, 'install') && exit 1;\r
index 6ed8a3f..6c629c1 100644 (file)
@@ -11,7 +11,7 @@ use File::Path ();
 use Carp ();
 use Config;
 
-our $VERSION = '1.004000'; # 1.4.0
+our $VERSION = '1.004001'; # 1.4.1
 
 sub import {
   my ($class, @args) = @_;
@@ -586,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<cpan
+-i Foo::Bar>, but it fails with an error like: 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> 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<rm -r ~/.cpan/build/Foo-Bar*>
+
+Finally, re-run C<cpan -i Foo::Bar> and it should install without problems.
+
 =head1 ENVIRONMENT
 
 =over 4
@@ -614,8 +630,13 @@ Doc patches for a custom local::lib directory contributed by Torsten Raudssus
 <torsten@raudssus.de>.
 
 Hans Dieter Pearcey <hdp@cpan.org> sent in some additional tests for ensuring
-things will install properly, and furthermore submitted a fix for the bug
-causing problems with writing Makefiles during bootstrapping. Many thanks!
+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