Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1239333
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

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

    [root@BKMonitor002 ~]# ll /lib/libpng12.so.0*
    lrwxrwxrwx 1 root root 19 Nov 30 11:28 /lib/libpng12.so.0 -> libpng12.so.0.1.2.8
    -rwxr-xr-x 1 root root 262576 Nov 30 11:28 /lib/libpng12.so.0.1.2.8

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. ()

    For more information read the RRD manpages

哈哈,错误消失,故障解决啦!


阅读(3273) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~