<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post/1503/</link>
<title><![CDATA[[疑难杂症]删除掉所有rpm包产生 libstdc++.so.6: cannot open shared object file...]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Tue, 16 Dec 2008 10:13:02 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/1503/</guid> 
<description>
<![CDATA[ 
	内网机器：<div class="code">10.210.71.72</div><br/>用户名：xiangdong2<br/>密码：123456<br/><br/>删除掉所有的rpm包命令： 为何要删除？请进:&nbsp;&nbsp;http://www.xiangdong.org/blog/post/1426/ ，大家千万别学我这样一个语句把重要的系统库都干掉了，千万不能重新启动！！！<br/><br/><div class="code">rpm -qa&#124;awk &#039;&#123;print &quot;rpm -e &quot; $0 &quot; --allmatches --nodeps&quot;&#125;&#039;&#124;sh</div><br/>后 rpm qa出现：<br/> rpm: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory<br/><div class="code">ldd /bin/rpm</div><br/><div class="code">&#91;xiangdong2@7158vm08 CentOS&#93;$ ldd /bin/rpm<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libstdc++.so.6 =&gt; not found</div><br/><br/>发现libstdc++.so.6在rpm的libstdc++-4.1.2-42.el5.i386.rpm中，在其他一台linux机器中：<br/>安装:<br/><div class="code">rpm -ihv libstdc++-4.1.2-42.el5.i386.rpm</div><br/>查看so文件位置：<br/><div class="code">rpm -qpl&nbsp;&nbsp;libstdc++-4.1.2-42.el5.i386.rpm</div><br/>/usr/lib/libstdc++.so.6<br/>/usr/lib/libstdc++.so.6.0.8<br/>拷贝到有问题的linux上<br/><div class="code">cp libstdc++.so.6 /lib64/libstdc++.so.6</div><br/>后再次运行：<br/>rpm -qa<br/>出现：<br/>rpm: error while loading shared libraries: libstdc++.so.6: wrong ELF class: ELFCLASS32 <br/>这下就不知道了。。。？？？？<br/>怀疑是不是系统版本以及rpm包是32位还是64位的问题：<br/>出问题的机器：<br/><div class="code">&#91;xiangdong2@7158vm08 CentOS&#93;$ uname -rsp<br/>Linux 2.6.18-92.el5xen x86_64</div><br/><br/>安装rpm得到libstdc++.so.6的机器：<br/><div class="code">&#91;root@vm19 /&#93;# uname -rsp<br/>Linux 2.6.18-53.el5xen i686</div><br/><br/>有Ixxx的全是32位的，有X86—64的全是64位！<br/><br/>有一篇文章如是说：<br/>有的rpm有分i386、i586和i686等不同版本，如：<br/>　　abc-1.2.3-4.i386.rpm<br/>　　abc-1.2.3-4.i586.rpm<br/>　　abc-1.2.3-4.i686.rpm<br/>　　它们有什么不同呢？<br/>　　这里的i386、i586、i686指的是适用于intel i386、 i586、i686 兼容指令集的微处理器。一般来说，等级愈高的机器可接受较低等级的rpm文件。你可以透过/proc/cpuinfo这个档案查询你的CPU等级。 <br/>比对i686：<br/><div class="code">&#91;root@vm19 rpm&#93;# ldd /bin/rpm <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;linux-gate.so.1 =&gt;&nbsp;&nbsp;(0x003e9000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;librpm-4.4.so =&gt; /usr/lib/librpm-4.4.so (0x00b45000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;librpmdb-4.4.so =&gt; /usr/lib/librpmdb-4.4.so (0x0091c000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libselinux.so.1 =&gt; /lib/libselinux.so.1 (0x00895000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;librpmio-4.4.so =&gt; /usr/lib/librpmio-4.4.so (0x00a35000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libpopt.so.0 =&gt; /usr/lib/libpopt.so.0 (0x00dd3000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libsqlite3.so.0 =&gt; /usr/lib/libsqlite3.so.0 (0x00acd000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libelf.so.1 =&gt; /usr/lib/libelf.so.1 (0x00b2e000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libbeecrypt.so.6 =&gt; /usr/lib/libbeecrypt.so.6 (0x008dc000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libm.so.6 =&gt; /lib/i686/nosegneg/libm.so.6 (0x0080b000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libdl.so.2 =&gt; /lib/libdl.so.2 (0x00805000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libz.so.1 =&gt; /usr/lib/libz.so.1 (0x008ae000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;librt.so.1 =&gt; /lib/i686/nosegneg/librt.so.1 (0x008c3000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libpthread.so.0 =&gt; /lib/i686/nosegneg/libpthread.so.0 (0x00834000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libbz2.so.1 =&gt; /usr/lib/libbz2.so.1 (0x00479000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libc.so.6 =&gt; /lib/i686/nosegneg/libc.so.6 (0x006c0000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libsepol.so.1 =&gt; /lib/libsepol.so.1 (0x0084d000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/lib/ld-linux.so.2 (0x0069e000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libgcc_s.so.1 =&gt; /lib/libgcc_s.so.1 (0x008ce000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libstdc++.so.6 =&gt; /usr/lib/libstdc++.so.6 (0x00c2f000)</div><br/>比对X86—64：<br/>[root@7158vm08 CentOS]# ldd /bin/rpm <br/><br/><div class="code"><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;librpm-4.4.so =&gt; /usr/lib64/librpm-4.4.so (0x000000339f000000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;librpmdb-4.4.so =&gt; /usr/lib64/librpmdb-4.4.so (0x000000339e800000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libselinux.so.1 =&gt; /lib64/libselinux.so.1 (0x0000003218400000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;librpmio-4.4.so =&gt; /usr/lib64/librpmio-4.4.so (0x000000339ec00000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libpopt.so.0 =&gt; /usr/lib64/libpopt.so.0 (0x000000321cc00000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libsqlite3.so.0 =&gt; /usr/lib64/libsqlite3.so.0 (0x0000003219000000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libelf.so.1 =&gt; /usr/lib64/libelf.so.1 (0x000000321a400000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libbeecrypt.so.6 =&gt; /usr/lib64/libbeecrypt.so.6 (0x0000003219400000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libm.so.6 =&gt; /lib64/libm.so.6 (0x0000003217c00000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libdl.so.2 =&gt; /lib64/libdl.so.2 (0x0000003217400000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libz.so.1 =&gt; /usr/lib64/libz.so.1 (0x0000003218c00000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;librt.so.1 =&gt; /lib64/librt.so.1 (0x0000003218800000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libpthread.so.0 =&gt; /lib64/libpthread.so.0 (0x0000003217800000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libbz2.so.1 =&gt; /usr/lib64/libbz2.so.1 (0x00000035f0600000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libc.so.6 =&gt; /lib64/libc.so.6 (0x0000003217000000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libsepol.so.1 =&gt; /lib64/libsepol.so.1 (0x0000003218000000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/lib64/ld-linux-x86-64.so.2 (0x0000003216c00000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libgcc_s.so.1 =&gt; /lib64/libgcc_s.so.1 (0x0000003219800000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libstdc++.so.6 =&gt; not found</div><br/>对应的目录不一样， libstdc++.so.6一个是： /usr/lib/libstdc++.so.6 (0x00c2f000)，一个是：/lib64/libstdc++.so.6&nbsp;&nbsp;(确定是这个位置！)<br/><br/><br/><br/>一老外说是这个rpm的，但试了还是不行：<br/><br/>compat-libstdc++-33-3.2.3-61.i386.rpm<br/><br/><div class="code"><br/>&#91;root@vm19 /&#93;# rpm -qpl compat-libstdc++-33-3.2.3-61.i386.rpm<br/>/usr/lib/libstdc++.so.5<br/>/usr/lib/libstdc++.so.5.0.7</div><br/><br/>最后得出得需要装64位的rpm包，而且libstdc++.so.6要通过rpm -qpl ***.rpm对应到：/lib64 才OK！<br/><br/>结果果然：<br/><div class="code">&#91;root@vm19 rpm&#93;# rpm -qpl libstdc++-4.1.2-42.el5.x86_64.rpm<br/>/usr/lib64/libstdc++.so.6<br/>/usr/lib64/libstdc++.so.6.0.8</div><br/><div class="code">&#91;xiangdong2@vm19 rpm&#93;$ rpm -pql libstdc++-4.1.2-42.el5.i386.rpm<br/>/usr/lib/libstdc++.so.6<br/>/usr/lib/libstdc++.so.6.0.8<br/>&#91;xiangdong2@vm19 rpm&#93;$ rpm -pql libstdc++-4.1.2-42.el5.x86_64.rpm<br/>/usr/lib64/libstdc++.so.6<br/>/usr/lib64/libstdc++.so.6.0.8</div><br/>果然：<br/>libstdc++-4.1.2-42.el5.x86_64.rpm 里面有这个libstdc++.so.6：<br/><br/><div class="code">&#91;root@7158vm08 ~&#93;# rm -Rf /usr/lib64/libstdc++.so.6<br/>&#91;root@7158vm08 ~&#93;# cp -Rf&nbsp;&nbsp;libstdc++.so.6 /usr/lib64/<br/>&#91;root@7158vm08 ~&#93;# rpm<br/>rpm: error while loading shared libraries: /lib64/libstdc++.so.6: file too short</div><br/>如何是好？？？难道运维人员是用dvd的包安装的？呵呵，接着俺们下个dvd的包就知道了，呵呵，下载中。。。拭目以待！<br/>DVD包的rpm：<br/><div class="code"><br/>&#91;root@vm19 rpm&#93;# rpm -pql libstdc++-4.1.2-42.el5.i386.rpm<br/>/usr/lib/libstdc++.so.6<br/>/usr/lib/libstdc++.so.6.0.8<br/>&#91;root@vm19 rpm&#93;# rpm -qpl libstdc++-4.1.2-42.el5.x86_64.rpm<br/>/usr/lib64/libstdc++.so.6<br/>/usr/lib64/libstdc++.so.6.0.8</div><br/>通过7zip解压后，放到目标机：<br/><div class="code"><br/>&#91;root@7158vm08 ~&#93;# cp libstdc++.so.6 /lib64/<br/>&#91;root@7158vm08 ~&#93;# rpm<br/>rpm: error while loading shared libraries: /lib64/libstdc++.so.6: file too short</div><br/><br/>还是不行报错...<br/><br/>[root@7158vm08 ~]# cat /etc/redhat-release<br/>CentOS release 5.2 (Final)<br/>我也下载的是CentOS release 5.2啊，天啊。。。<br/><br/>这个哥们也遇到类似问题：<br/>http://f170.blogspot.com/2008/11/libstdclibstdcso6.html
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/1503/#blogcomment50688</link>
<title><![CDATA[[评论] [疑难杂症]删除掉所有rpm包产生 libstdc++.so.6: cannot open shared object file...]]></title> 
<author>chao008 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 18 Dec 2008 06:05:51 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/1503/#blogcomment50688</guid> 
<description>
<![CDATA[ 
	libstdc为gcc的一部分，重新安装gcc试试？
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/1503/#blogcomment50689</link>
<title><![CDATA[[评论] [疑难杂症]删除掉所有rpm包产生 libstdc++.so.6: cannot open shared object file...]]></title> 
<author>root &lt;admin@yourname.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 29 Dec 2008 10:14:36 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/1503/#blogcomment50689</guid> 
<description>
<![CDATA[ 
	此法不通，问题已经解决，修改了博文，谢谢！
]]>
</description>
</item>
</channel>
</rss>