Perl 5.22 to 5.24 upgrading issue

There's a big issue when upgrading from any Perl version, i.e. 5.22 on Slackware64-14.2 to 5.24 on Slackware-current. Perl based programs are broken.

Error sample:
LibIDN.c: loadable library and perl binaries are mismatched (got handshake key 0xdb00080, needed 0xdb80080)
Zlib.c: loadable library and perl binaries are mismatched (got handshake key 0xdb00080, needed 0xdb80080)
DBI.c: loadable library and perl binaries are mismatched (got handshake key 0xdb00080, needed 0xdb80080)


Symptom:

This problem is due to Perl handsake feature, where it detects modules that are compiled with different Perl version.


Solution:

1. quick and dirty solution

Move all related modules that was compiled with Perl 5.22. In this case I back them up in different folders. I execute a simple bash script, something like:

VERSION=_5.22
mv /usr/local/lib64/perl5  /usr/local/lib64/perl5$VERSION
mv /usr/local/shared/perl5  /usr/local/shared/perl5$VERSION
mv /root/.cpan /root/.cpan$VERSION
mv /usr/lib64/perl5/vendor_perl /usr/lib64/perl5/vendor_perl$VERSION
mv /usr/share/perl5/vendor_perl /usr/share/perl5/vendor_perl$VERSION
mv /usr/lib64/perl5 /usr/lib64/perl5$VERSION
mv /usr/share/perl5 /usr/share/perl5$VERSION


2. Second workaround

Downgrade to 5.22 version first then install App::cpanminus and App::cpanoutdated
or App::pmuninstall. We may uninstall CPAN modules by invoking all installed modules via cpanm

Something like:
cpanm --uninstall {module}

3. Third workaround

Downgrade to 5.22 version and live happily. :D


Now I am with Perl 5.24.1 on Slackware64-current and Perl based programs are working  :D

Comments

Popular posts from this blog

Xeon LGA 771 di mobo LGA 775

Writing and reading float using Arduino EEPROM

LM35 Incubator with LCD 16x2 on Arduino