http://qs321.pair.com?node_id=754683

Hue-Bond has asked for the wisdom of the Perl Monks concerning the following question:

Hello monks,

I'm deploying a copy of perl-5.8.9 in my system, since I need it for working on a project and my system perl has already been upgraded to 5.10. So far the compilation and installation of perl-5.8.9 has gone fine and now I'm installing the project's required modules.

I'm getting an error with CGI::Test, during the make test stage, saying undefined symbol: PL_curpad. This is the partial output of what I'm doing:

$ PATH=$PATH:/opt/myperl/bin /opt/myperl/bin/cpan CGI::Test [...] Running make test PERL_DL_NONLAZY=1 /opt/myperl/bin/perl "-MExtUtils::Command::MM" "-e" +"test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/env...........ok + t/get...........ok + t/parsing.......ok + t/play_get......ok + t/play_multi....ok 3/27Can't load '/opt/myperl/lib/5.8.9/i686-linux/au +to/Fcntl/Fcntl.so' for module Fcntl: /opt/myperl/lib/5.8.9/i686-linux +/auto/Fcntl/Fcntl.so: undefined symbol: PL_curpad at /opt/myperl/lib/ +5.8.9/i686-linux/XSLoader.pm line 70. at /opt/myperl/lib/5.8.9/i686-linux/Fcntl.pm line 215 BEGIN failed--compilation aborted at /opt/myperl/lib/5.8.9/i686-linux/ +Fcntl.pm line 216.

I've searched google and the monastery to no avail, although I saw some things that could help to shed some light on this:

$ nm /opt/myperl/lib/5.8.9/i686-linux/auto/Fcntl/Fcntl.so | grep PL_cu +rpad U PL_curpad $ nm /opt/myperl/bin/perl | grep PL_curpad 0813c000 B PL_curpad $ /opt/myperl/bin/perl -MFcntl -e 'print "ok\n";' ok

This last snippet shows that Fcntl seems to load properly, although it doesn't when testing CGI::Test. Maybe I'm inadvertently mixing something with the system perl, although I don't see where. What should I do? I'm out of ideas.

--
David Serrano

Replies are listed 'Best First'.
Re: Unable to install CGI::Test on a local installation of perl
by jethro (Monsignor) on Apr 01, 2009 at 13:06 UTC

    Maybe you should have used PATH=/opt/myperl/bin:$PATH so that your perl5.8.9 is found BEFORE the installed perl5.10.

    Try this in a new shell (with unchanged PATH):

    PATH=$PATH:/opt/myperl/bin perl -v PATH=/opt/myperl/bin:$PATH perl -v

    If I'm right, you should see the version output of 5.10 and then the version output of 5.8.9

      Thank you very much, that little thing did it!

      --
      David Serrano