Bug 1526063

Summary: perl stops working after upgrade F26 -> F27
Product: [Fedora] Fedora Reporter: Donald O. <jblecker>
Component: perlAssignee: Jitka Plesnikova <jplesnik>
Status: CLOSED EOL QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: urgent Docs Contact:
Priority: unspecified    
Version: 27CC: alexl, caillon+fedoraproject, emmanuel, iarnell, jplesnik, kasal, mbarnes, mmaslano, perl-devel, ppisar, psabata, rc040203, rhughes, sandmann, tcallawa
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-12-15 08:02:27 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Donald O. 2017-12-14 17:31:10 UTC
Description of problem:
I can'r run my perl scripts because of module errors. To solve them I tried to re-run my perl cpan script - which fails.

Version-Release number of selected component (if applicable):
perl5 (revision 5 version 26 subversion 1)

How reproducible:
 Invoking cpan 
Steps to Reproduce:
1.
 Invoking cpan via command line
2.
result:
3.


Actual results:

Attempt to reload Scalar/Util.pm aborted.
Compilation failed in require at /usr/share/perl5/Safe.pm line 4.
BEGIN failed--compilation aborted at /usr/share/perl5/Safe.pm line 4.
Compilation failed in require at /usr/share/perl5/vendor_perl/CPAN.pm line 57.
BEGIN failed--compilation aborted at /usr/share/perl5/vendor_perl/CPAN.pm line 57.
Compilation failed in require at /usr/share/perl5/vendor_perl/App/Cpan.pm line 288.
BEGIN failed--compilation aborted at /usr/share/perl5/vendor_perl/App/Cpan.pm line 288.
Compilation failed in require at /usr/bin/cpan line 7.
BEGIN failed--compilation aborted at /usr/bin/cpan line 7.

Expected results:
no error message.

Additional info:

invokib cowsay causes:

Can't load '/usr/local/lib64/perl5/auto/Encode/Encode.so' for module Encode: libperl.so.5.24: cannot open shared object file: No such file or directory at /usr/share/perl5/XSLoader.pm line 96.
 at /usr/local/lib64/perl5/Encode.pm line 10.
Compilation failed in require at /usr/bin/cowsay line 18.

Comment 1 Donald O. 2017-12-14 22:46:00 UTC
1) I removed perl and cpan
2) installed dnf install perl
no perl binary to be found, then i installed
3) dnf install perl-core
bash: perl: command not found

whats going on?

Comment 2 Emmanuel Seyman 2017-12-14 23:28:14 UTC
what is the output of "rpm -qa | grep perl" (please file this as an attachment if the output is too large)?
What is the output of "dnf -y install /usr/bin/perl"?

Comment 3 Petr Pisar 2017-12-15 08:02:27 UTC
(In reply to Donald O. from comment #0)
> Description of problem:
> I can'r run my perl scripts because of module errors. To solve them I tried
> to re-run my perl cpan script - which fails.
[...]
> Can't load '/usr/local/lib64/perl5/auto/Encode/Encode.so' for module Encode:
> libperl.so.5.24: cannot open shared object file: No such file or directory
> at /usr/share/perl5/XSLoader.pm line 96.
>  at /usr/local/lib64/perl5/Encode.pm line 10.
> Compilation failed in require at /usr/bin/cowsay line 18.

Your problem is /usr/local/lib64/perl5/auto/Encode/Encode.so file. This is your local installation for Encode module from CPAN made when have installed Fedora 25 with Perl 5.24. Thus at file was built against libperl.so.5.24 library.

After upgrading to Fedora 26 with Perl 5.26 the libperl.so.5.24 library was replaced with a new and incompatible libperl.so.5.26. But your /usr/local/lib64/perl5/auto/Encode/Encode.so still refers to libperl.so.5.24.

The is known Perl feature that major Perl upgrades like from 5.24 to 5.26 are not binary compatible and thus users have to reinstall modules they had installed from CPAN manually.

The easiest fix is removing all files you installed from CPAN (/usr/local/lib64/perl5 and /usr/local/share/perl5).

Comment 4 Donald O. 2017-12-15 10:26:21 UTC
guess it isn't as easy just replacing Encode.so. There are much more dependencies.
Finally I dnf removed the whole perl mash and installed activeperl from perl.com.
Thereafter everything is working fine so far.

Comment 5 Ralf Corsepius 2017-12-15 11:03:42 UTC
(In reply to Donald O. from comment #4)
> guess it isn't as easy just replacing Encode.so. There are much more
> dependencies.
You need to remove (and possibly rebuild) everything below /usr/local/lib64/perl5 and /usr/local/share/perl5.

> Finally I dnf removed the whole perl mash and installed activeperl from
> perl.com.
Your choice, your poison. I would not want to this. It's only a matter of time until similar issues will hit you again.

> Thereafter everything is working fine so far.
It only temporarily appears so, but it surely doesn't.

Comment 6 Emmanuel Seyman 2017-12-15 12:41:36 UTC
> Finally I dnf removed the whole perl mash and installed activeperl from perl.com.

Out of curiosity, what are you trying to achieve that the system perl doesn't allow you to do?

Comment 7 Donald O. 2017-12-15 13:29:52 UTC
see comment #2

1) I (dnf) removed perl and cpan
2) installed dnf install perl
(whole lotta .pm files, but) no perl binary to be found, then i installed
3) dnf install perl-core
bash: perl: command not found

whats going on?

( I repeated that with the same effect. no way)

Comment 8 Petr Pisar 2017-12-15 14:02:03 UTC
(In reply to Donald O. from comment #7)
> see comment #2
> 
> 1) I (dnf) removed perl and cpan
> 2) installed dnf install perl

At this point you should have installed "/usr/bin/perl" file that belongs to "perl-interpreter" package that is required by "perl" package. If not, then something is terribly wrong.

Did the "dnf install perl" terminate successfully? Do you have installed perl-5.26.1-401.fc27.x86_64.rpm and perl-interpreter-5.26.1-401.fc27.x86_64.rpm packages (if your system has x86_64 architecture)? Does /usr/bin/perl file exist? Is the file executable?

You can use "rpm -q perl perl-interpreter" to verify the two packages are installed.

Comment 9 Emmanuel Seyman 2017-12-15 14:08:59 UTC
(In reply to Donald O. from comment #7)
>
> see comment #2
> 

That comment tells us what you did but not why you did it.

Comment 10 Donald O. 2017-12-15 15:33:06 UTC
> If not, then something is terribly wrong.
so it is. the dnf install terminated successfully. dnf info works, however a 
dnf repoquery -l <pkg> had no effect on both perl packages, whereas a repoquery on cinnamon for example does what it should do. Thats why I moved to M$ activestate perl, which workes out of the box, and finished my large cpan install {...} perfectly within a couple of minutes.

Guess something basically wrong after two upgrades (from 25->26->27). I also experienced massive virtual memory utilization with the 4.14.5 kernel, therefore I booted 4.14.4 having a tiny 4mb swap file now after 4 hours. However thats a different problem.

Comment 11 Donald O. 2017-12-15 21:58:06 UTC
guess its time to close it, as I found a solution working for me.
Thank to all!

Comment 12 Jitka Plesnikova 2018-06-14 06:27:02 UTC
*** Bug 1590973 has been marked as a duplicate of this bug. ***