Michael Ludwig wrote:
The mod_perl DSO itself is installed to $ServerRoot/modules. Doing
an ldd on the module doesn't reveal any dependencies on libraries
under $ServerRoot/lib, but I guess that nevertheless, this mod_perl
does very well depend on the particular Apache version it is
configured and built to work with. True?
Very true.


I can only see dependencies on /lib/ld-linux.so.2, libc.so.6, and
linux-gate.so.1. But this certainly doesn't mean that there is no
dependency on the particular version of mod_perl that is installed?
Or does it?
it most definitely dpends on libperl.so, httpd, apr, apr-util, and mod_perl.so


Doing the same find/ldd loop for /usr/local/lib/perl/5.8.8/auto/APR,
I can see more dependencies, including dependencies on the
particular Apache installation:
libapreq2.so and mod_apreq2.so + all the above ones.


/usr/local/apache22w/lib/libapr-1.so.0 (0xb7eb8000)
/usr/local/apache22w/lib/libaprutil-1.so.0
/usr/local/apache22w/lib/libexpat.so.0

And even - horrors - this one (which looks like an error in the
configure/build logic):


/usr/local/src/libapreq2-2.08/library/.libs/libapreq2.so.3
we [joes] just fixed this though it doesn't affect everyone. Its will be in the next release which will be soonish

Now, what happens if I am going to install a new Apache
2.2/prefork with mod_perl in addition to the already existing
Apache 2.2/worker with mod_perl? The new mod_perl modules are
going to clobber the existing one, probably rendering the old
mod_perl useless by supplanting their own versions linked to the
prefork MPM libraries, and I imagine the worker MPM won't be happy
when being asked to interact with these. True?
Correct, you get to play magical paths.

Consider yourself a developer now and the following tree:

/sfw
  /perl
    5.8.1
    5.8.8
      none-stdio-mymalloc
      ithread-perlio-perlmalloc
  /cpans
    5.8.8-none-perlio-perlmalloc
  /apr
    1.3.3
      threaded
      none
  /apu
    1.3.4
      apr-1.3.3-threaded
        threaded
        none
      apr-1.3.3-none
  /httpd
    2.2.11
      prefork
        apr-1.3.3-none=apu-1.3.4-none
      worker
      event
  /mod_perl
     2.0.3
     2.0.4
     r732904

5.8.8-none-perlio-mymalloc=httpd-2.2.11-apr-1.3.3-none-apu-1.3.4-none

  /libapreq2
    2.0.7
    2.0.8

2.0.4=5.8.8-none-perlio-mymalloc=httpd-2.2.11-apr-1.3.3-none-apu-1.3.4


After doing this with a bug of ./configure, Makefile.PL and Configure flags you have 2 options

1) use the path to the .so in the install directories
2) install the .so into modules/
   BUT rename it to something like
mod_perl-5.8.8-none-perlio-mymalloc=httpd-2.2.11-apr-1.3.3-none-apu-1.3.4-none.so

Then load the correct one.

The good part is that Apache-Test lets you pass flags to name the mod_perl.so you want. When testing stuff or running the perl test suite.

This also applies to libapreq2.so, but not quite yet with the Apache-Test cli naming.

Doing the above will allow you to install ALMOST the full permutations of what we support. To get the full amount, you have to through GCC into the mix for older httpd's.

Be warned, you'll need a good sized disk for this. Of course, if there are combinations you know you'll never care about, then you leave them out and your directory names get shorter.

my @perl_io_types     = qw(perlio stdio);
my @perl_thread_types = qw(none ithreads);
my @perl_malloc_types = qw(mymalloc perlmalloc);

## only some were actually bundled
## 0.x for 2.0.xx 1.2.x and 1.3.x for 2.2.xx)
## threadedness of apr/apu should match
my @apr_vers = qw(lots);
my @apu_vers = qw(lots);

my @apr_thread_types = qw(threaded none);
my @apu_thread_types = qw(threaded none)
  ## XXX: dbd, gdbm, mysql, pgsql, oracle, freetds, ldap, etc...

## prefork is apr/apu without threads
## prefork_threaded is them with threads
my @httpd2_vers = qw(2.0.48...2.0.63, 2.2.0..2.2.11);
my @httpd2_mpms = qw(prefork prefork_threaded worker event);

my @mod_perl_vers = qw(2.0.4);
  MP_MAINTAINER MP_DEBUG MP_APXS
my @libapreq2_vers = qw(2.0.8)

--
------------------------------------------------------------------------
Philip M. Gollucci (pgollu...@p6m7g8.com) c: 703.336.9354
Consultant - P6M7G8 Inc.  http://p6m7g8.net
Senior System Admin - RideCharge, Inc.  http://ridecharge.com
1024D/DB9B8C1C B90B FBC3 A3A1 C71A 8E70  3F8C 75B8 8FFB DB9B 8C1C

Work like you don't need the money,
love like you'll never get hurt,
and dance like nobody's watching.

Reply via email to