I had to move a perl script from an old server to a new one. Both the
old and new servers are running "CentOS release 5.10 (Final)" and perl
v5.8.8. (But the problem I'm running into appears to be a package
management problem and not a Perl problem which is why I'm posting it to
a CentOS list.)
The line of code in the script that attempts to open a Net::SFTP
connection, which was working fine on the old machine, no longer works
on the new machine. I've tracked it down to the module
Net::SSH::Perl::Key::DSA not loading correctly on the new machine. On
the old one, the line:
perl -e "use Net::SSH::Perl::Key::DSA;"
gives no error and no output (as expected), but on the new machine, the
same line gives:
www:/var/www/html/circumventor# perl -e "use Net::SSH::Perl::Key::DSA;"
Math::BigInt version 1.78 required--this is only version 1.77 at
/usr/lib/perl5/vendor_perl/5.8.8/Crypt/DSA/KeyChain.pm line 4.
BEGIN failed--compilation aborted at
/usr/lib/perl5/vendor_perl/5.8.8/Crypt/DSA/KeyChain.pm line 4.
Compilation failed in require at
/usr/lib/perl5/vendor_perl/5.8.8/Crypt/DSA.pm line 7.
BEGIN failed--compilation aborted at
/usr/lib/perl5/vendor_perl/5.8.8/Crypt/DSA.pm line 7.
Compilation failed in require at
/usr/lib/perl5/vendor_perl/5.8.8/Net/SSH/Perl/Key/DSA.pm line 14.
BEGIN failed--compilation aborted at
/usr/lib/perl5/vendor_perl/5.8.8/Net/SSH/Perl/Key/DSA.pm line 14.
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
I tried to install Math::BigInt on my new machine, by adding a file at
/etc/yum.repos.d/custom.repo containing the lines:
[local]
name=Perl_module
baseurl=http://apt.sw.be/redhat/el5/en/i386/rpmforge/
enabled=1
gpgcheck=0
and then running "yum install Math::BigInt", but it just goes through a
lot of spew and then ends with this error:
>>>
Transaction Check Error:
file /usr/share/man/man3/Math::BigFloat.3pm.gz from install of
perl-Math-BigIn
t-1.89-1.el5.rf.noarch conflicts with file from package
perl-5.8.8-41.el5.i386
file /usr/share/man/man3/Math::BigInt.3pm.gz from install of
perl-Math-BigInt-
1.89-1.el5.rf.noarch conflicts with file from package perl-5.8.8-41.el5.i386
file /usr/share/man/man3/Math::BigInt::Calc.3pm.gz from install of
perl-Math-B
igInt-1.89-1.el5.rf.noarch conflicts with file from package
perl-5.8.8-41.el5.i3
86
file /usr/share/man/man3/Math::BigInt::CalcEmu.3pm.gz from install of
perl-Mat
h-BigInt-1.89-1.el5.rf.noarch conflicts with file from package
perl-5.8.8-41.el5
.i386
Error Summary
>>>
Both servers have Math::BigInt 1.77 installed. As far as I can tell, the
reason the error occurs on the new server but not on the old server, is
because on the old server the place that Math::BigInt is loaded is in
the file /usr/lib/perl5/vendor_perl/5.8.8/Net/IP.pm which contains the line:
use Math::BigInt;
whereas on the new server, Math::BigInt is loaded in the file
/usr/lib/perl5/vendor_perl/5.8.8/Crypt/DSA/KeyChain.pm which contains
the line:
use Math::BigInt 1.78 try => 'GMP, Pari';
However, that's where my "expertise", such as it is, runs out. I have no
idea why the two machines even attempt to load Math::BigInt in two
different ways since I don't remember installing things differently on
them. I would like to fix the problem on the new machine in the cleanest
possible way (i.e., not just commenting out the "1.78" in the line "use
Math::BigInt 1.78" -- I don't think that would be the "clean" solution!).
Any idea what to do?
Bennett