CentOS 5 上的 Firefox 4

随着 mozilla.com 发布 Firefox 4,CentOS 5.x 内的 libstd++ 不能满足执行该版 Firefox 的需求。你按一般方法安装 Firefox 会遇到以下的错误:

<某路径>/firefox-bin: <某路径>/libstdc++.so.6: version GLIBCXX_3.4.9 not found (required by <某路径>/libxul.so)

该问题已记载在这个 mozillazine 论坛议题(Firefox 4.0b9 and CentOS 5.5)。以下的解决辨法适用于 Firefox 4.0 版及 CentOS 5.6。

Mozilla 在他们的 bugzilla 内(错误 621704)表示,他们决定不会修正这个问题。

权宜之计就是将一个来自 Fedora、可在 CentOS-5 下运行、并且满足 Firefox-4 需求的 libstdc++.so.6 与 Firefox 的其它函式库一并放置在 Firefox-4 的目录里。由于你将会使用一个不被支持的 libstdc++.so.6 版本,你务必要把这个函式库放进 Firefox 目录而不是系统般用的位置,因为后者会把它提供给其它程序。

安装下列组件是执行 mozilla.com 网站的 Firefox 4 的先决条件:

你可以利用以下指令来安装它们:

yum install alsa-lib atk cairo dbus-libs expat fontconfig freetype glib2 glibc gtk2 libcap libgcc libICE libjpeg libpng libSM libX11 libXau libXcursor libXdmcp libXext libXfixes libXi libXinerama libXrandr libXrender libXt pango xulrunner zlib

i386 版安装

你需要下载 Mozilla 网站里最新版的 Firefox 4(注:这是 en-US 语系的最新 4.0 版安装。要取得其它语系或版本,你可浏览下列连结。最新的压缩文件名叫 firefox-4.0.tar.bz2):

Firefox 4.0 i686

你也需要下载一个合适的 libstdc++.so.6。在这个例子中,你可采用 Fedora 9 i386 的版本:

libstdc++-4.3.0-8.i386.rpm

当你拥有这两个组件,请用以下方法将它们解压到一个目录内:

mkdir firefox4
mv firefox-4.0.tar.bz2 libstdc++-4.3.0-8.i386.rpm firefox4
cd firefox4
tar xvjf firefox-4.0.tar.bz2

上述做法会在现有层级创建一个 firefox 目录。现在我们须要解压 libstdc++ rpm 并将 libstd++.so 档复制至该 firefox 目录:

mkdir libstdc
cd libstdc
rpm2cpio ../libstdc++-4.3.0-8.i386.rpm | cpio -idv
cp usr/lib/libstdc++.so.6.0.10 ../firefox/libstdc++.so.6
cd ..

现在你应该已返回你的 firefox4 目录,并且把函式库复制至 firefox 目录内。这个指令能告该你它的位置是否正确:

ls firefox/libstdc++.so.6

结果应该是:

firefox/libstdc++.so.6

现在你已准备好把 firefox 目录放置在任何一个用来执行它的位置。我一般会把它放置在 /usr/lib/firefox-4。首先,我先会转换身份为 root:

su

接着我会设置 root 为拥有者及复制文件:

chown -R root.root firefox
cp -a firefox /usr/lib/firefox-4

现在你可以退出 root 的指令壳及利用以下指令执行 firefox:

/usr/lib/firefox-4/firefox

x86_64 版安装

你需要下载 Mozilla 网站里最新版的 Firefox 4(注:这是 en-US 语系的最新 4.0 版安装。要取得其它语系或版本,你可浏览下列连结。最新的压缩文件名叫 firefox-4.0.tar.bz2):

Firefox 4.0 x86_64

你也需要下载一个合适的 libstdc++.so.6。在这个例子中,你可采用 Fedora 9 x86_64 的版本:

libstdc++-4.3.0-8.x86_64.rpm

当你拥有这两个组件,请用以下方法将它们解压到一个目录内:

mkdir firefox4
mv firefox-4.0.tar.bz2 libstdc++-4.3.0-8.x86_64.rpm firefox4
cd firefox4
tar xvjf firefox-4.0.tar.bz2

上述做法会在现有层级创建一个 firefox 目录。现在我们须要解压 libstdc++ rpm 并将 libstd++.so 档复制至该 firefox 目录:

mkdir libstdc
cd libstdc
rpm2cpio ../libstdc++-4.3.0-8.x86_64.rpm | cpio -idv
cp usr/lib64/libstdc++.so.6.0.10 ../firefox/libstdc++.so.6
cd ..

现在你应该已返回你的 firefox4 目录,并且把函式库复制至 firefox 目录内。这个指令能告该你它的位置是否正确:

ls firefox/libstdc++.so.6

结果应该是:

firefox/libstdc++.so.6

现在你已准备好把 firefox 目录放置在任何一个用来执行它的位置。我一般会把它放置在 /usr/lib64/firefox-4。首先,我先会转换身份为 root:

su

接着我会设置 root 为拥有者及复制文件:

chown -R root.root firefox
cp -a firefox /usr/lib64/firefox-4

现在你可以退出 root 的指令壳及利用以下指令执行 firefox:

/usr/lib64/firefox-4/firefox

Translation of revision 3

zh/TipsAndTricks/Firefox4onCentOS5 (last edited 2011-04-19 04:26:41 by TimothyLee)