perl

Dave Cross davorg at gmail.com
Fri May 2 12:15:35 UTC 2014


On 30 April 2014 19:01, Patrick Dupre <pdupre at gmx.com> wrote:
> Hello,
>
> I do not understand,
>
> I have 2 machines fedora 20 x86_64.
> On one my application run fine, on the other one I get an error:
> Perl API version v5.16.0 of PDL::Core does not match v5.18.0 at /usr/lib64/perl5/DynaLoader.pm line 213.
> Compilation failed in require at (eval 42) line 6.
> BEGIN failed--compilation aborted at (eval 42) line 6.
> BEGIN failed--compilation aborted at /home/pdupre/Spectroscopy/Stepram/Input_windows.pm line 12.
>
>
> At line 12 there is
> use PDL ;
>
> Both perl-PDL are the same.
>
> How can I debug?

The error says that one of your machines has a version of PDL
installed that was built against the wrong version of Perl. You have
Perl 5.18 installed, but the PDL library was build for Perl 5.16. PDL
is an "XS-based" library. That means that a lot of it is made up of C
code. Perl doesn't guarantee binary compatibility between major
versions so XS-based libraries need to be rebuilt for a new version.

The question then becomes, how did your system get into that state. I
can suggest two possibilities.

1/ Your system was upgraded from a previous version of Fedora which
was running Perl 5.16 and for some reason the upgrade didn't pull in
the new version of the RPM. You say that both systems have the same
perl-PDL installed, but how similar are they? They might be the same
version number but built for different Perl versions (or, rather,
different versions of Fedora). What do you get if you run 'rpm -q
perl-PDL' on each of the systems?

If this is the problem, then you can probably fix it by running "yum
reinstall perl-PDL".

2/ Your system was upgraded from previous version of Fedora which was
running Perl 5.16 and that older installation had a version of PDL
which was installed through cpan, not rpm/yum. It's possible that the
cpan-installed version is in an different directory to the
yum-installed version and that the cpan-installed version's directory
appears earlier on the @INC path. This would mean the Perl completely
ignores the yum-installed version. Try running these three command and
report back what you get.

perl -MPDL -le'print $INC{"PDL.pm"}'
rpm -ql perl-PDL | grep PDL.pm
perl -le'print $_ for @INC'

Hope this helps,

Dave...

-- 
Dave Cross :: dave at dave.org.uk
http://dave.org.uk/
@davorg


More information about the users mailing list