在Red Hat Enterprise Linux Server release 6.6 (Santiago)上安装了Symantec Backup Exec Remote Agent 2010后,启动Backup Exec Remote Agent 2010启动服务时报错。
[root@getlnx15 be]# /etc/init.d/VRTSralus.init start
Starting Symantec Backup Exec Remote Agent ..............................
Starting Symantec Backup Exec Remote Agent: [FAILED]
检查日志时发现如下错误信息:: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
[root@getlnx15 ~]# cd /var/VRTSralus/
[root@getlnx15 VRTSralus]# ls
beremote.service.log ralus.ver
[root@getlnx15 VRTSralus]# more beremote.service.log
/opt/VRTSralus/bin/beremote: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
[root@getlnx15 VRTSralus]#
在搜索一些资料后,从网上下载了libstdc++.so.5文件,并将其放置在/usr/lib,但是发现这样处理其实无法解决问题。在搜索一番资料后,发现只需要安装compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm即可。如下所示,安装了对应包以后,Symantec Backup Exec Remote Agent 2010成功启动!
[root@getlnx15 Packages]# ls *libstdc++*
compat-libstdc++-296-2.96-144.el6.i686.rpm libstdc++-4.4.7-11.el6.x86_64.rpm
compat-libstdc++-33-3.2.3-69.el6.i686.rpm libstdc++-devel-4.4.7-11.el6.i686.rpm
compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm libstdc++-devel-4.4.7-11.el6.x86_64.rpm
libstdc++-4.4.7-11.el6.i686.rpm libstdc++-docs-4.4.7-11.el6.x86_64.rpm
[root@getlnx15 Packages]# rpm -qa | grep libstdc
libstdc++-4.4.7-11.el6.x86_64
[root@getlnx15 Packages]# rpm -ivh compat-libstdc++-33-3.2.3-69.el6.i686.rpm
warning: compat-libstdc++-33-3.2.3-69.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
libgcc_s.so.1 is needed by compat-libstdc++-33-3.2.3-69.el6.i686
libgcc_s.so.1(GCC_3.0) is needed by compat-libstdc++-33-3.2.3-69.el6.i686
libgcc_s.so.1(GCC_3.3) is needed by compat-libstdc++-33-3.2.3-69.el6.i686
libgcc_s.so.1(GLIBC_2.0) is needed by compat-libstdc++-33-3.2.3-69.el6.i686
[root@getlnx15 Packages]# rpm -ivh libgcc-4.4.7-11.el6.x86_64.rpm
warning: libgcc-4.4.7-11.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
package libgcc-4.4.7-11.el6.x86_64 is already installed
[root@getlnx15 Packages]# rpm -ivh libgcc-4.4.7-11.el6.i686.rpm
warning: libgcc-4.4.7-11.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
1:libgcc ########################################### [100%]
[root@getlnx15 Packages]# rpm -ivh compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm
warning: compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
1:compat-libstdc++-33 ########################################### [100%]
那么compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm与libstdc++.so.5是什么关系,其实使用rpm -ql命令就可以查找一个rpm包里面包含哪些文件,如下所示,compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm里面包含文件libstdc++.so.5,这也是为何安装compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm即可解决问题的原因。
[root@getlnx15 cdrom]# rpm -ql compat-libstdc++-33-3.2.3-69.el6.x86_64
/usr/lib64/libstdc++.so.5
/usr/lib64/libstdc++.so.5.0.7
[root@getlnx15 cdrom]#
小知识点:
查看一个rpm包包含哪些文件,可以有两种方式:
1:一个没有安装过的软件包,使用rpm -qlp rpm-filename.rpm
2:一个已经安装过的软件包,使用rpm -ql packet-name
查看一个文件属于哪个rpm包, rpm -qf /path/filename