[SOLVED] Perl - undefined symbol error since -current updates
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Perl - undefined symbol error since -current updates
G'Day,
After the updates on Friday 13th (32bit) I seem to have a broken Perl installation. The error message I get when any perl program that uses a database is:
Code:
/usr/bin/perl: symbol lookup error: /usr/lib/perl5/site_perl/5.12.3/i486-linux-thread-multi/auto/BDI/DBI.so: undefined symbol: Perl_Istack_sp_ptr
Unfortunately, I don't know where to start looking for a solution. Any pointers would be most helpful.
It looks like you've upgraded DBI and then upgraded the Perl package installed on your system (your offending DBI is in site_perl and Slackware's is in vendor_perl, with modules in site_perl taking precedence).
Ideally, you want to remove modules compiled/installed under 5.12.3 and reinstall them under 5.16.0. It doesn't matter for pure-Perl modules (assuming they'll still work with new versions of Perl's core modules, which they will, because that's how Perl rolls), but with XS modules like DBI you'll run into problems.
Code:
# cpanp -i DBI
will fix you.
Last edited by CTM; 07-17-2012 at 06:00 PM.
Reason: clarification
If I reinstall a module under the later version, will the module still work when run with an earlier version.
Context:
we have scripts shared across multiple servers which are access via a mounted volume. Each server uses a local version of perl, and the perl versions are not consistent. The module in question (Kx) was installed with an older version and is bombing when run with a local instance of perl 5.16.3.
In a perfect world, I can rebuild with 5.16.3 and still have the script work with 5.10 or other older versions. If not I'll have to probably include a perl build on the shared mount and refactor a lot of scripts. Is the former possible?
If I reinstall a module under the later version, will the module still work when run with an earlier version.
Context:
we have scripts shared across multiple servers which are access via a mounted volume. Each server uses a local version of perl, and the perl versions are not consistent. The module in question (Kx) was installed with an older version and is bombing when run with a local instance of perl 5.16.3.
In a perfect world, I can rebuild with 5.16.3 and still have the script work with 5.10 or other older versions. If not I'll have to probably include a perl build on the shared mount and refactor a lot of scripts. Is the former possible?
It should be possible, provided:
your scripts on the shared volume don't have a hard-coded dependency on a particular version of Perl (e.g. "use v5.16")
you install your modules on each local perl your intend your scripts to run on
the modules themselves don't have a hard dependency on a particular version of Perl
interestingly, just for kicks I built another perl instance of the correct version (5.10.1) and the module in question would not work with it. It seems it will only work with the specific instance of Perl it was built with. Which is unfortunate.
but as I understood what he wrote I don't think he got issues *building* modules: he wants to use modules built on one perl version on another perl version that most probably is binary incompatible with the first and that leads to a segfault when *using* the modules on a different perl version from the one they were built over.
to avoid that he really should rebuild the modules that he wants to use with the second perl version on that one.
it's also possible that I haven't understood what he wants to do
but as I understood what he wrote I don't think he got issues *building* modules: he wants to use modules built on one perl version on another perl version that most probably is binary incompatible with the first and that leads to a segfault when *using* the modules on a different perl version from the one they were built over.
to avoid that he really should rebuild the modules that he wants to use with the second perl version on that one.
it's also possible that I haven't understood what he wants to do
You are correct. The original perl version is 5.10.1 and this is what the module was built with. The 2nd is 5.16.3, and this is the version for which i first saw the error.
I built a third version in my home dir, also 5.10.1, and got that same error when using the module.
This behavior is strange bc:
- the module is installed to a path on my mounted home dir so it is available across many servers
- the perl build used on each system is a local build that lives at /usr/bin/perl, and has historically been v5.10.1
- i have not seen this issue for any other server
When i get to work i can provide more info on OS versions
You are correct. The original perl version is 5.10.1 and this is what the module was built with. The 2nd is 5.16.3, and this is the version for which i first saw the error.
I built a third version in my home dir, also 5.10.1, and got that same error when using the module.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.