當64位的Ubuntu運行32位的Firefox時,會出現無法切換中文IME這種情況,一般出現在手動更新了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也已經可以使用,而且開啟網頁的速度還是比較快的!
等待外掛程式豐富的一天,我也會好好使用它。