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
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