Bug 286581 - latest perl-5.8.8-23.fc7 breaks many packages
latest perl-5.8.8-23.fc7 breaks many packages
Status: CLOSED NOTABUG
Product: Fedora
Classification: Fedora
Component: perl (Show other bugs)
7
x86_64 Linux
medium Severity urgent
: ---
: ---
Assigned To: Robin Norwood
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2007-09-11 14:21 EDT by David Favor
Modified: 2007-11-30 17:12 EST (History)
3 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2007-09-16 16:26:35 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description David Favor 2007-09-11 14:21:47 EDT
Description of problem:


Version-Release number of selected component (if applicable):

Linux net1.coolsurf.com 2.6.22.4-65.fc7

How reproducible:


Steps to Reproduce:
1. yum update perl
2. perl -MCPAN -e 'install("CPAN")'
3. Numerous "does not match executable architecture" error messages.
  
Looking at perl -MCPAN -e shell -> r show the version of CPAN set to
1.76_02 after the above yum update. This package should be around 1.19x
and the error message coming out talks about an old FC6 architecture of
x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen, so something's amiss.

This causes any perl scripts to crash or function oddly.

Please let me know how to correct this.

Thanks.
Comment 1 David Favor 2007-09-11 14:30:10 EDT
Oops CPAN rev should be 1.91x instead of 1.19x.
Comment 2 David Favor 2007-09-11 17:41:55 EDT
Changing from test4 to f7 imagining that f7 really means FC7.
Comment 3 Tom "spot" Callaway 2007-09-12 09:35:11 EDT
So, while Upstream CPAN might be at 1.91x, the version of perl(CPAN) included
with the perl-5.8.8 tarball is only at 1.76.

We don't diverge from the included items in the perl upstream tarball because,
well, upstream perl doesn't really want us to.

On my rawhide system (same perl level), I can't reproduce your "does not match
executable architecture" error messages. Can you send a log of this output,
along with the output from:

rpm -q perl-CPAN --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n"

Thanks
Comment 4 Tom "spot" Callaway 2007-09-12 09:48:04 EDT
Perhaps this is a dupe of 245592 ?
Comment 5 David Favor 2007-09-12 10:54:14 EDT
Please reread this bug carefully. The CPAN note is for information only.

The real bug is installing latest perl completely breaks systems.

Any perl module which contains compiled code is broken after doing
yum update perl. The problem is not with CPAN.

The problem is a FC6 (x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen) perl
is installed when doing 'yum update perl' on an FC7 installation.
Comment 6 Tom "spot" Callaway 2007-09-12 11:03:16 EDT
OK. Breaks systems how exactly? Please show a concrete example.
Comment 7 David Favor 2007-09-12 11:14:50 EDT
Example 1

net1#perl5.8.8 -MCPAN -e 'install CPAN'
CPAN: Storable loaded ok
Going to read /root/.cpan/Metadata
  Database was generated on Mon, 10 Sep 2007 18:36:46 GMT
CPAN: LWP::UserAgent loaded ok
Fetching with LWP:
  ftp://cpan.pair.com/pub/CPAN/authors/01mailrc.txt.gz
LWP failed with code[500] message[Errno architecture
(x86_64-linux-thread-multi-2.6.20-1.2933.fc6xen) does not match executable
architecture (x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen) at
/usr/lib/perl5/site_perl/5.8.8/Errno.pm line 11.
Compilation failed in require at
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/IO/Socket.pm line 17.
BEGIN failed--compilation aborted at
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/IO/Socket.pm line 17.
Compilation failed in require at /usr/lib/perl5/5.8.8/Net/FTP.pm line 18.
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.8/Net/FTP.pm line 18.
Compilation failed in require at
/usr/lib/perl5/site_perl/5.8.8/LWP/Protocol/ftp.pm line 24.
]
Fetching with Net::FTP:
  ftp://cpan.pair.com/pub/CPAN/authors/01mailrc.txt.gz
Can't locate object method "new" via package "Net::FTP" at
/usr/lib/perl5/5.8.8/CPAN.pm line 2250.
Comment 8 Tom "spot" Callaway 2007-09-12 11:29:12 EDT
Can't reproduce on my end... can you show me:

rpm -q perl --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n"

Thanks.
Comment 9 David Favor 2007-09-12 11:40:50 EDT
net1#rpm -q perl --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n"
perl-5.8.8-23.fc7.x86_64

Comment 10 David Favor 2007-09-15 10:56:03 EDT
The problem is an incorrectly specified os release level which forces
an fc6xen installation, which will fail for all other kernels.

For example:

   net2#uname -r
   2.6.22.4-65.fc7

will always fail to match 

   x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen

The problem is here:

./site_perl/5.8.8/Errno.pm:"x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen" or
./site_perl/5.8.8/Errno.pm:     die "Errno architecture
(x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen) does not match executable
architecture ($Config{'archname'}-$Config{'osvers'})";


./5.8.8/x86_64-linux-thread-multi/Config_heavy.pl:## Target system     : linux
xenbuilder4.fedora.phx.redhat.com 2.6.20-1.2962.fc6xen #1 smp tue jun 19
19:10:51 edt 2007 x86_64 x86_64 x86_64 gnulinux 
./5.8.8/x86_64-linux-thread-multi/Config_heavy.pl:myuname='linux
xenbuilder4.fedora.phx.redhat.com 2.6.20-1.2962.fc6xen #1 smp tue jun 19
19:10:51 edt 2007 x86_64 x86_64 x86_64 gnulinux '
./5.8.8/x86_64-linux-thread-multi/Config_heavy.pl:osvers='2.6.20-1.2962.fc6xen'
./5.8.8/x86_64-linux-thread-multi/Errno.pm:"x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen"
or
./5.8.8/x86_64-linux-thread-multi/Errno.pm:     die "Errno architecture
(x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen) does not match executable
architecture ($Config{'archname'}-$Config{'osvers'})";
./5.8.8/x86_64-linux-thread-multi/Config.pm:    osvers => '2.6.20-1.2962.fc6xen',

Comment 11 Tom "spot" Callaway 2007-09-15 12:30:41 EDT
Well, not really.

Config.pm defines both archname and osvers, perl doesn't ask uname for this.
Otherwise it would always be wrong, except in the corner case where you happen
to be using perl on the exact same kernel that you built it on. Anytime you
updated the kernel, perl would stop working.

From what you've pasted, 
$Config{'archname'} resolves from archname => 'x86_64-linux-thread-multi',
$Config{'osvers'} resolves from osvers => '2.6.20-1.2962.fc6xen',

The buildroots use xen instances, which is why they pick up a xen kernel osvers,
but it is not a problem, because perl just looks at Config.pm to make sure that
things match up.

Now, if we look at your specific error:

Errno architecture
(x86_64-linux-thread-multi-2.6.20-1.2933.fc6xen) does not match executable
architecture (x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen) at ...

It means that your Errno.pm somehow got a hardcoded value for
x86_64-linux-thread-multi-2.6.20-1.2933.fc6xen on line 11, instead of the
x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen value that it should have.

I unpacked (rpmcpio perl-5.8.8-23.fc7.x86_64.rpm | cpio -idv) the
perl-5.8.8-23.fc7 package to confirm that it does not have this mistake, and 
usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/Errno.pm looks like this:

"$Config{'archname'}-$Config{'osvers'}" eq
"x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen" or
        die "Errno architecture (x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen)
does not match executable architecture ($Config{'archname'}-$Config{'osvers'})";

I would suggest that you take a look at your Errno.pm, as you might somehow have
kept an old one, or have an old one being picked up in your path. Grep through
/usr/lib64/perl5/* for the 2.6.20-1.2933.fc6xen string.

Comment 12 David Favor 2007-09-16 08:30:57 EDT
Yes. This fails.

net1#/usr/bin/perl5.8.8 -MErrno
Errno architecture (x86_64-linux-thread-multi-2.6.20-1.2933.fc6xen) does not
match executable architecture (x86_64-linux-thread-multi-2.6.20-1.2962.fc6xen)
at /usr/lib/perl5/site_perl/5.8.8/Errno.pm line 11.
Compilation failed in require.
BEGIN failed--compilation aborted.

And this fixes the problem.

yum remove efont-unicode-bdf terminus-font-x11
yum remove ghostscript-fonts msttcorefonts fonts-x11-apl fonts-truetype-apl
yum remove xorg-x11-fonts-ISO*
yum remove psutils xorg-x11-font-utils perl
rm -rf /usr/lib/perl5 /usr/lib64/perl5
yum install perl

perl -MErrno -MConfig -e 'print "$Config{version}\n"'

Comment 13 Tom "spot" Callaway 2007-09-16 16:26:35 EDT
So, I've still got no idea how you managed to get your system in that state, but
I'm glad you were able to resolve it.

Closing as "NOTABUG", because "NOIDEA" isn't a valid state. Thanks for your
patience. :)

Note You need to log in before you can comment on or make changes to this bug.