What does a mod_perl 2.0 installation on Linux consist of?

* Apache 2.0 or 2.2
* mod_perl 2.0
* libapreq (optional, true, but indispensable for convenience)

The Apache, let's say the worker MPM, is going to be installed
under /usr/local/apache22w. If I now want to install a prefork
MPM next to it, this is no problem at all, it goes to, say,
/usr/local/apache22pf.

But what about the mod_perl 2.0 installation?

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?

There is also the Perl interface to Apache/mod_perl, a bunch
of modules installed under, say, /usr/local/lib/perl/5.8.8 and
/usr/local/lib/perl/5.8.8/auto.

Doing a crude ldd on all those modules:

  find /usr/local/lib/perl/5.8.8/auto/Apache2 -type f -name \*.so \
    | while read so; do ldd $so; done | sort | uniq -c

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?

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:

/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

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?

Does anyone know what the dependencies are?

And how would I deal with this situation if my above observation
was true and I wanted a worker and a prefork MPM on the same
machine, both with mod_perl?

Michael Ludwig

Reply via email to