perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Darryl Miles <darryl-mailingli...@netbauds.net>
Subject Re: MP2.0.2 + HTTPD 2.2.0 Linux test failures (libaprutil-1.so.0: cannot open shared object file)
Date Sat, 06 May 2006 00:38:19 GMT
Philip M. Gollucci wrote:
> This isn't actually mod_perl's fault.
> *-0 vs *-1 libraries and binaries are from DIFFERNT major versions of 
> APR/APRUTIL.
> 
> If they happen to be in your path (you said they are), then they get 
> found and use even if you wan't them to (and sometimes if you specify 
> not too).  The easiest solution is to move them out side of any lib/bin 
> PATHs and then compile
> httpd and let it install its own apr/apr-util.
> 
> After that, the mod_perl compile with will use the apr-1-config and such 
> will return the correct paths.
> 
> Using ld.so.conf will likely not work.  It might fix this error, but it 
> was cause others.

I think you completely miss the point of my comments, but thanks for 
your reply.


I agree *-0 and *-1 are different versions required for different 
version of apache-httpd.  As I stated I have a Linux distribution copy 
of Apache 2.0.x, which uses *-0 (and I dont expect my apache 2.2.x to 
use it in any way).

As stated the only copy of Apache 2.2.x is one I compiled and install to 
/opt/apache2_prefork.

My concern is that, if I have installed a perfect copy of Apache 2.2.x 
using the Apache file layout then I should not need to configure 
anything special for it to work.  Nor configure anything special for 
mod_perl2 to find the /opt/apache2_prefork/lib/libaprutil-1.so which I 
have.  That should work out-the-box.

At this moment it does not work, I think thats very wrong.  At the least 
something like the ld.so environment variable equivalent 
LD_PRELOAD=/opt/apache2_prefork/lib/libaprutil-1.so should be set 
forcing a sane precedence order to load the DSOs.


Then part of my post went on to explain that even if I had a Linux 
distribution copy of *-1 say at /usr/lib/libaprutil-1.so, if I am using 
the Apache file layout and have /opt/apache2_prefork/lib/libaprutil-1.so 
then my compiled version should always override the system /usr/lib copy.

Maybe the ./configure script needs to add:

export LD_LIBRARY_PATH="$apache_prefix/lib:"

In the correct place, "man 8 ld.so" can help here.


This sure is mod_perl's fault for not setting up the environment which 
the HTTP server is running under in a sane manner in relation to what is 
can learn from apxs/apr-1-config.


# This is worked out inside ./configure already
apr_config_path="/opt/apache2_prefork/bin/apr-1-config"

# If platform supports shlib-path-var configure it
ldso_varname=$(${apr_config_path} --shlib-path-var)
if [ "x${ldso_varname}" != "x" ]
then
	apache_prefix=$(${apr_config_path} --prefix)

	# Try to not override with a system default path,
	#  but /usr/local would be ok
	if [ "${apache_prefix}" != "/" ] && \
		[ "${apache_prefix}" != "/usr" ]
	then
		apache_libdir="${apache_prefix}/lib"

		# Check dir exists
		if [ -d "${apache_libdir}" ]
		then
			# Prepend directory to front of list
			# export LD_LIBRARY_PATH="$apache_prefix/lib:"
			tmp="${ldso_varname}"
			set "${ldso_varname}=${apache_libdir}:${tmp}"
			unset tmp

			export "${ldso_varname}"
		fi
	fi
fi



Darryl

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org


Mime
View raw message