0

我创建了一个 Perl 脚本并在几台运行Net::SNMP 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) 不是必需的吗?

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

    [user@wb 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

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

我注意到别的东西。有 2 组default_store.so库。

/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

工作正常的机器只有vendor_perl机器,这是随 RPM 一起安装的。两者(供应商和基地)有什么区别?如何强制 perl 使用vendor_perl中的附加组件?

4

2 回答 2

1

这可能是

  • /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

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

于 2009-06-23T07:57:12.030 回答
0

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

于 2009-07-22T07:43:25.127 回答