Perl 为什么Net::SNMP试图加载错误的libnetsnmp.so?

Perl 为什么Net::SNMP试图加载错误的libnetsnmp.so?,perl,snmp,Perl,Snmp,我创建了一个Perl脚本,并在运行5.3.1-19的两台服务器上对其进行了测试,但现在我尝试在另一台服务器上运行它,结果发现以下错误: 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 share

我创建了一个Perl脚本,并在运行5.3.1-19的两台服务器上对其进行了测试,但现在我尝试在另一台服务器上运行它,结果发现以下错误:

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.
为什么加载程序抱怨libnetsnmp.so.15?我在所有其他服务器上都安装了libnetsnmp.so.10,它工作正常。符号链接指向同一版本(10),而不是15。对于更高版本的Net::SNMP(5.4.2.1),这不是必需的吗

当所有snmp包都相同时,为什么要尝试在此服务器中使用更新版本的动态库

我注意到了另外一件事。有两套默认存储。因此

/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/auto/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
正常工作的机器只有供应商的perl机器,这是随RPM一起安装的。两者(供应商和基地)之间有什么区别?如何强制perl使用供应商perl中的附加组件?

可能是

  • /usr/lib/perl5/site\u perl/5.8.8/i386 linux线程多线程/auto/NetSNMP/agent/default\u store/default\u store.so
    ,或
  • /usr/lib/perl5/site\u perl/5.8.8/i386 linux线程多/auto/NetSNMP/default\u store/default\u store.so

链接到特定版本的
libntsnmp.so
,对上述两个文件运行
ldd
,查看输出告诉您什么。

如果libnetsnmp.so.15是未知打印:
find/-name libnetsnmp.so.15 cp/../libnetsnmp.so.15/usr/lib或在分配所有lib的目录中
一切都会好起来的……

请在问题中添加
perl-V
的输出。
/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/auto/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