【发布时间】:2020-07-10 05:47:46
【问题描述】:
我创建了一个 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 中的插件?
【问题讨论】:
-
请将
perl -V的输出添加到问题中。