笔者在SLES11SP1启动snmpd服务时报如下的错误,因为之前都是没有问题的,觉得非常奇怪。
/usr/sbin/snmpd: undefined symbol: smux_listen_sd
在网上查了一下这个报错,大部分都是说重新安装net-snmp。而我重新安装net-snmp软件包之后,还是同样地报错。这个问题该如何去看待呢?我在处理的过程中,走了一些弯路,现在将整个问题的处理方式整理一下,发在这里供各位参考。
查看这个报错,我们要认识到,这是在执行/usr/sbin/snmpd所报出来的错误,我们可以尝试执行/usr/sbin/snmpd,这个报错还是会出现。而从报错的文字来看,我们可以了解到,/usr/sbin/snmpd在执行过程中要调用一些类库,但是在调用的过程中却发现找不到某个类库的某个符号。那么,这个类库到底是哪个呢?我们可以使用ldd命令查看所有/usr/sbin/snmpd引用的类库。
ldd /usr/sbin/snmpd
其中有一些形如libnetsnmp*的类库,比如下面的这行。我们有理由怀疑报错的符号是libnetsnmp*类库中的,在我们实际处理过程中,对比了其他正常主机的情况,发现libnetsnmp*类库的路径差异很大。
libnetsnmp.so.15 => /lib64/libnetsnmp.so.15
/lib64/libnetsnmp.so.15 -> /smp/net-snmp/lib/libnetsnmp.so.15
本文解决了一个在SLES11SP1中启动snmpd服务时遇到的问题,即出现undefined symbol: smux_listen_sd错误。通过分析错误原因,对比正常主机配置,最终定位到问题是由不正确的libnetsnmp.so.15软链接引起的,并给出了修复建议。
1741

被折叠的 条评论
为什么被折叠?



