simone.marcato has asked for the wisdom of the Perl Monks concerning the following question:

Hello, I don't now if this is the right place for asking I'm trying to install redmine and give svn access to users, my apache configuration is the following:
LoadModule perl_module /usr/lib64/httpd/modules/mod_perl.so PerlLoadModule Apache::Redmine <Location /> LoadModule dav_svn_module /usr/lib64/httpd/modules/mod_dav_svn.so DAV svn SVNParentPath "/opt/svn" SVNListParentPath On Order deny,allow Satisfy any AuthType Basic AuthName "Filoblu SVN Repository" #AuthUserFile /home/filo02/public_html/svn/svn.passwd PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler Require valid-user Allow from 50.22.178.181 Allow from 127.0.0.1 Satisfy any Require valid-user RedmineDSN "DBI:mysql:database=filo02_redmine_production;host=loca +lhost" RedmineDbUser "filo02_redmine" RedmineDbPass "tW0]^[T=Ps*4" </Location>
but when I try to start apache it gave this error:
Can't load '/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-mul +ti/auto/DBI/DBI.so' for module DBI: /usr/lib64/perl5/vendor_perl/5.8. +8/x86_64-linux-thread-multi/auto/DBI/DBI.so: undefined symbol: PL_tai +nting at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DynaLoader. +pm line 230. at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/DBI.pm l +ine 269 BEGIN failed--compilation aborted at /usr/lib64/perl5/site_perl/5.8.8/ +x86_64-linux-thread-multi/DBI.pm line 269. Compilation failed in require at /usr/lib/perl5/site_perl/Apache/Redmi +ne.pm line 101. BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/Apache/R +edmine.pm line 101. Compilation failed in require at (eval 2) line 3.
searching in the web I've only found people saying that is a perl problem. I'm a newbie to perl so after few days trying to fix this I have not managed to fix, I hope someone can help me

Replies are listed 'Best First'.
Re: Help needed for Redmine installation, DBI issue
by moritz (Cardinal) on Nov 03, 2011 at 16:09 UTC

    It looks like your DBI installation might be incomplete. How was it installed? By copying some files manually? or via the CPAN client? or by your OS'es package manager?

    Does perl -MDBI -e 1 print any errors when executed from the command line?

      I'm working in a VPS running CentOS 5.7 with a preinstalled whm and cpanel. I've tried to either via OS package and CPAN client, initially I had issue with 2 DBI version of DBI that I solved removing the old one. perl -MDBI -e 1 doesn't print errors
Re: Help needed for Redmine installation, DBI issue
by Eliya (Vicar) on Nov 03, 2011 at 17:30 UTC
    .../auto/DBI/DBI.so: undefined symbol: PL_tainting

    Presumably, the Perl interpreter that mod_perl has been linked against is not the one that DBI.so has been built/linked against. In other words, DBI.so requires/references a symbol (PL_tainting) that isn't provided by that Perl interpreter.

    It's a little difficult to diagnose such issues remotely, because "the Perl interpreter" can come in different flavors (dynamically or statically linked etc.)... but typically, mod_perl.so is linked dynamically against a libperl.so (which in this case is the Perl interpreter) — and due to (presumably) being a different version, it might not be providing the symbol PL_tainting.

    You can use ldd to check which libs mod_perl.so depends on. You should see something like:

    $ ldd /usr/lib64/apache2/mod_perl.so linux-vdso.so.1 => (0x00007fffb37ff000) libperl.so => /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/ +CORE/libperl.so (0x00007fc9cd343000) libm.so.6 => /lib64/libm.so.6 (0x00007fc9cd0ba000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fc9cceb6000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fc9ccc79000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc9cca5c000) libc.so.6 => /lib64/libc.so.6 (0x00007fc9cc703000) /lib64/ld-linux-x86-64.so.2 (0x00007fc9cd93f000)

    You can then run nm on the libperl.so being pulled in — e.g. (in my case):

    $ nm -D /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.s +o | grep PL_tainting

    nm lists what symbols a shared lib (or binary) uses. The symbols required but not provided by the lib itself are marked with "U" (=undefined), while the symbols provided are marked with D/B/T (depending on which segment they belong to). For example, when you run nm on your DBI.so, you should see

    $ nm -D /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/a +uto/DBI/DBI.so | grep PL_tainting U PL_tainting

    And my guess would be that whatever your mod_perl is pulling in is not providing that symbol.  In that case, you would need to find another mod_perl.so that matches your Perl installation. Or install a Perl that matches your existing mod_perl.so (whatever is less trouble, because mod_perl.so must also match your existing Apache version...).

    HTH.