2009-06-22 8 views
0

Ich habe ein Perl-Skript und testete ihn auf ein paar Servern Net::SNMP 5.3.1-19, laufen aber jetzt versuche ich es auf einem anderen Server zu laufen und ich die folgende Fehlermeldung erhalten:Warum versucht Net :: SNMP den falschen libnetsnmp.so zu laden?

Can't load '/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/NetSNMP/default_store/default_store.so' for module NetSNMP::default_store: libnetsnmp.so.15: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230. at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/SNMP.pm line 16 Compilation failed in require at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/SNMP.pm line 16. BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/SNMP.pm line 16. Compilation failed in require at /shaw/neteye/perl_scripts/cmtsmonitord.pl line 9. BEGIN failed--compilation aborted at /shaw/neteye/perl_scripts/cmtsmonitord.pl line 9.

Warum klagt der Loader über libnetsnmp.so.15? Ich habe libnetsnmp.so.10 in allen anderen Servern installiert und es funktioniert gut. Die Symlinks verweisen auf die gleiche Version (10), nicht auf 15. Ist das für eine spätere Version von Net :: SNMP (5.4.2.1) nicht erforderlich?

[[email protected] lib]$ sudo /sbin/ldconfig |grep snmp 
    /sbin/ldconfig: /usr/lib/libgd.so.2 is not a symbolic link 

    [[email protected] lib]$ sudo /sbin/ldconfig -p |grep snmp 
    libsnmp.so.10 (libc6) => /usr/lib/libsnmp.so.10 
    libnetsnmptrapd.so.10 (libc6) => /usr/lib/libnetsnmptrapd.so.10 
    libnetsnmpmibs.so.10 (libc6) => /usr/lib/libnetsnmpmibs.so.10 
    libnetsnmphelpers.so.10 (libc6) => /usr/lib/libnetsnmphelpers.so.10 
    libnetsnmpagent.so.10 (libc6) => /usr/lib/libnetsnmpagent.so.10 
    libnetsnmp.so.10 (libc6) => /usr/lib/libnetsnmp.so.10 

Warum ist es versucht, eine neuere Version der dynamischen Bibliothek in diesem Server zu verwenden, wenn alle der snmp-Pakete gleich sind?

Ich bemerkte etwas anderes. Es gibt 2 Sätze von default_store.so-Bibliotheken.

/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/NetSNMP/agent/default_store/default_store.so /usr/lib/perl5/site_perl/5.8.8/ i386-linux-thread-multi/automatisch/NetSNMP/default_store/default_store.so /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/NetSNMP/agent/default_store/default_store.so /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/NetSNMP/default_store/default_store.so

die Maschinen, die haben feine nur die vendor_perl diejenigen arbeiten, die, was ist wird mit den RPMs installiert. Was ist der Unterschied zwischen den 2? (Anbieter und Basis) Wie erzwinge ich Perl, das Add-On in vendoer_perl zu verwenden?

Danke!

+0

Bitte fügen Sie die Ausgabe von 'perl -V' zu der Frage. –

Antwort

1

Es kann sein, dass die

  • /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/NetSNMP/agent/default_store/default_store.so oder
  • /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/NetSNMP/default_store/default_store.so

gegen eine bestimmte Version von libntsnmp.so verknüpft ist, ldd gegen beide der oben genannten Dateien ausführen und sehen, was die Ausgabe sagt dir.

0

Wenn libnetsnmp.so.15 ist unbekannt Druck:
find/-name libnetsnmp.so.15 cp /.../libnetsnmp.so.15/usr/lib oder in diesem Verzeichnis, in dem alle Libs zugeordnet sind Und es ist alles wird gut ...

Verwandte Themen