2013年(350)
分类: Oracle
2013-04-28 10:14:53
执行rrdtool命令时出现错误提示如下:
[root@BKMonitor002 ~]# /usr/local/rrdtool/bin/rrdtool
/usr/local/rrdtool/bin/rrdtool: /lib/libpng12.so.0: no version information available (required by /usr/local/rrdtool/lib/librrd.so.2)一开始通过四处搜寻解决方案,还别说,这类问题还真不好,google一搜就是一大把,而且说什么的都有。三思先是通过yum安装的rrdtool 1.2.27版本,看到网上有说要升级rrdtool版本到1.4的,有说要重新编译高版本libpng/libart_lgpl等依赖包的,有说要通过编译方式安装的,等等吧。可惜,这些方式不给力啊,按照各种说明配置了一下午,尝试了各种组合,最后我感觉脑袋都编译晕了,问题还是没解决~~
这倒不是定是它们说的不靠谱,我感觉主要应该还是实际情况有差异,比如系统版本,依赖包的版本等,当然也有可能是三思没能试到正确的组合。最终未果的情况下,三思决定来看看这个libpng12.so.0到底是怎么回事。找一个与之环境类似的做对比,拿ldd查看其依赖的动态链接库究竟有什么差异,先找了一台rrdtool工作正常的服务器,执行命令如下:
[root@BKMonitor001 ~]# ldd /usr/local/rrdtool/bin/rrdtool
librrd.so.2 => /usr/local/rrdtool/lib/librrd.so.2 (0x00002adae2f11000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x0000003b90200000)
libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x0000003aa6800000)
libz.so.1 => /usr/lib64/libz.so.1 (0x0000003b8da00000)
libart_lgpl_2.so.2 => /usr/lib64/libart_lgpl_2.so.2 (0x0000003aace00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003b8d600000)
libc.so.6 => /lib64/libc.so.6 (0x0000003b8ca00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003b8c600000)
而后再到出问题的服务器上执行相同语句注意了,报错信息马上就要出来了:
[root@BKMonitor002 ~]# ldd /usr/local/rrdtool/bin/rrdtool
/usr/local/rrdtool/bin/rrdtool: /lib/libpng12.so.0: no version information available (required by /usr/local/rrdtool/lib/librrd.so.2)
librrd.so.2 => /usr/local/rrdtool/lib/librrd.so.2 (0x00002b481bdb1000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x0000003b90200000)
libpng12.so.0 => /lib/libpng12.so.0 (0x00002b481c013000)
libz.so.1 => /usr/lib64/libz.so.1 (0x0000003b8da00000)
libart_lgpl_2.so.2 => /usr/lib64/libart_lgpl_2.so.2 (0x0000003eae800000)
libm.so.6 => /lib64/libm.so.6 (0x0000003b8d600000)
libc.so.6 => /lib64/libc.so.6 (0x0000003b8ca00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003b8c600000)
两相对比,我cow,libpng12.so.0文件路径不一致,链接的实际文件也不同啊,查看一下文件的信息:
[root@BKMonitor001 ~]# ll /usr/lib64/libpng12.so.0*
lrwxrwxrwx 1 root root 18 Nov 30 07:47 /usr/lib64/libpng12.so.0 -> libpng12.so.0.10.0
-rwxr-xr-x 1 root root 149344 Jul 15 2010 /usr/lib64/libpng12.so.0.10.0
libpng12.so.0是个软链接,两台机器上的实际指定文件也不一样,看到这种情况,三思下意识的想法是死马当成活马医,直接拿工作正常的机器中libpng12.so.0替换。通过sftp命令在两台机器上传输文件,而后覆盖文件:
[root@BKMonitor002 ~]# mv /lib/libpng12.so.0 /lib/libpng12.so.0.bak
[root@BKMonitor002 ~]# cp /home/jss/libpng12.so.0.10.0 /lib/libpng12.so.0
再次尝试执行rrdtool
[root@BKMonitor002 ~]# rrdtool create
RRDtool 1.2.27 Copyright 1997-2008 by Tobias Oetiker
Compiled Apr 6 00:00:25
Usage: rrdtool [options] command command_options
* create - create a new RRD
rrdtool create filename [--start|-b start time]
[--step|-s step]
[DS:ds-name:DST:dst arguments]
[RRA:CF:cf arguments]
RRDtool is distributed under the Terms of the GNU General
Public License Version 2. ()
哈哈,错误消失,故障解决啦!