当64位的Ubuntu运行32位的Firefox时,会出现无法切换中文输入法这种情况,一般出现在手动更新了FF(32位)。
用终端运行FF,可以看到出现以下警告:
(firefox-bin:19124): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/immodules/im-scim-bridge.so: wrong ELF class: ELFCLASS64
问题的出现主要是由于FF需要32位的GTK版本,但无法找到其位置。
同理,很多的出现这种问题都是这个原因,像QQ,OpenOffice都有可能出现。
解决方法如下:(在运行命令时请确保权限足够)
一、复制32位的so文件
复制32位的两个so文件到指定的目录下。
即把 32位系统的:
/usr/lib/gtk-2.0/2.10.0/immodules/ 的
-rw-r--r-- 1 root root 67648 2008-07-31 15:31 im-scim-bridge.so
-rw-r--r-- 1 root root 143588 2008-07-31 15:31 im-scim.so
复制到64位系统中的
/usr/lib32/gtk-2.0/2.10.0/immodules/
文件可以在这里下载 http://forum.ubuntu.org.cn/download/file.php?id=40107&sid=7b7683b631aa795fcf2e727186a419bf
二、修改gtk.immodules.32文件
这个文件主要用于向程序提示gtk的so路径,一般在以下路径可以找到:/etc/gtk-2.0
如果找不到可能是没有安装相关的库,可以运行以下命令:sudo aptitude install ia32-libs
sudo cp /usr/lib32/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules /etc/gtk-2.0/gtk.immodules.32
在文件最底部里面添加im-scim-bridge.so和im-scim.so的路径:
"/usr/lib32/gtk-2.0/2.10.0/immodules/im-scim.so"
"scim" "SCIM Input Method" "scim" "/usr/share/locale" "ja:ko:zh"
"/usr/lib32/gtk-2.0/2.10.0/immodules/im-scim-bridge.so"
"scim-bridge" "SCIM Bridge Input Method" "" "" ""
三、建立查询链接文件gtk-query-immodules-2.0
这个主要是程序启动时查询的文件,说明GTK的路径。但只是一个链接文件,
原来的链接为:../lib/libgtk2.0-0/gtk-query-immodules-2.0
即/usr/lib/libgtk2.0-0/gtk-query-immodules-2.0
现在要更新这个链接文件到我们修改的文件中
sudo mv /usr/bin/gtk-query-immodules-2.0 ~/
sudo ln -s /etc/gtk-2.0/gtk.immodules.32 /usr/bin/gtk-query-immodules-2.0
到这一步也已经完成了。试一下在终端打开FF,看还有没有警告的产生。
关键在于提供32位的so文件,并修改查询文件链接到gtk.immodules.32
终于处理了这几天烦人的问题,一个是FF的Flash插件,一个是切换中文。解决这两个,对Linux的熟悉又加深了一大步。
另外有个建议:如果你用的是64位的系统,可以直接用Chrome的64位的deb,这样可以简单很多,Flash也已经可以使用,而且打开网页的速度还是比较快的!
等待插件丰富的一天,我也会好好使用它。