I'm attempting to build a statically compiled version of Apache/mod_perl using a localized version of Perl 5.8.6 installed in my home directory. For the most part, everything is running smoothly except now I've run into a problem with MakeMaker.pm. When I try to run the Makefile.PL for mod_perl, MakeMaker complains that it can't find the Perl headers. Reviewing the perldoc for MakeMaker, it appears that PERL_INC should override this behavior, but it still keeps trying to find the headers under /usr/local instead of ~/perl5.
Here are all the steps I used to get to this point:
$ mkdir ~/perl5 ~/apache
$ cd perl-5.8.6
$ sh Configure -Umymalloc -des
$ make
$ make test
$ make install DESTDIR=~/perl5
$ mv ~/perl5/usr/local/* ~/perl5/
$ rm -rf ~/perl5/usr/
$ export PERL5LIB=~/perl5/lib/perl5/5.8.6:~/perl5/lib/perl5/site_perl/
+5.8.6
$ cd ../mod_perl-1.29/
$ export PERL_INC=~/perl5/lib/perl5/5.8.6/x86_64-linux/CORE
$ ~/perl5/bin/perl Makefile.PL \
PREFIX=~/perl5 \
APACHE_PREFIX=~/apache \
APACHE_SRC=../apache_1.3.33/src \
DO_HTTPD=1 \
PREP_HTTPD=1 \
EVERYTHING=1 \
USE_APACI=1
And the trailing error:
Error: Unable to locate installed Perl libraries or Perl source code.
It is recommended that you install perl in a standard location before
building extensions. Some precompiled versions of perl do not contain
these header files, so you cannot build extensions. In such a case,
please build and install your perl from a fresh perl distribution. It
usually solves this kind of problem.
(You get this message, because MakeMaker could not find "/usr/local/li
+b/perl5/5.8.6/x86_64-linux/CORE/perl.h")
Why does it continue to look in /usr/local instead of ~/perl5?
Update: I fixed it by properly installing the local perl with the prefix option. Full instructions for a non-root static Apache/mod_perl 1.x installation...
$ mkdir ~/perl5 ~/apache
$ cd perl-5.8.6
$ sh Configure -Umymalloc -des -Dprefix=~/perl5
$ make
$ make test
$ make install
$ export PERL5LIB=~/perl5/lib/5.8.6:~/perl5/lib/site_perl/5.8.6
$ cd ../mod_perl-1.29/
$ ~/perl5/bin/perl Makefile.PL \
PREFIX=~/perl5 \
APACHE_PREFIX=~/apache \
APACHE_SRC=../apache_1.3.33/src \
DO_HTTPD=1 \
PREP_HTTPD=1 \
EVERYTHING=1 \
USE_APACI=1
$ make
$ make install
$ cd ../apache_1.3.33
$ ./configure --prefix=$HOME/apache \
--with-layout=Apache \
--disable-rule=EXPAT \
--enable-module=rewrite \
--activate-module=src/modules/perl/libperl.a \
--disable-shared=perl
$ make
$ make install
$ cd ../Apache-Session-1.6
$ ~/perl5/bin/perl Makefile.PL PREFIX=~/perl5
$ make
$ make install
$ cd ../libapreq-1.33
$ ~/perl5/bin/perl Makefile.PL PREFIX=~/perl5
$ make
$ make install
Thanks,