Ibus-engine-table 没有运行,无法添加 ibus-table-* 输入法

看到论坛上只有讨论 FCITX 的,没有讨论 IBUS 的,希望这里提这个问题不要被打。虽然大家都说不要再用 IBUS 了,但是我毕竟用了多年,对它一点感情都没有,却特别怕换新产品出了问题后全无知识,无从下手引起日常工作延误(毕竟不是票友,LINUX 是我的工作主力机器)。

总之目前的问题是新装的 13.1+GNOME,只能添加拼音之类的 ibus-* 输入法,而不能添加五笔这样的 ibus-table-* 输入法。虽然 YAST 里已经安装了 ibus-table-chinese-wubi-jidian,但是在 gnome-control-panel 里添加输入法时,中文输入法类下没有五笔。

用 ps | grep ibus 检查,发现三个引擎中,ibus-engine-simple 和 ibus-engine-m17n 都有运行,ibus-engine-table 没有运行。手动执行 /usr/lib64/ibus-engine-table 会无声息退出,按 UNIX 沉默即正常的约定,这就是正常运行的意思,然而 ps | grep ibus 看,其实它没有在运行。

需要特别的步骤使 ibus-engine-table 启动吗?还是说它已经坏了?

P.S.
使用 LINUX 已经 10 年了,到现在新装的机器仍然需要玩配置改选项修 BUG 及熬夜折腾。我的工作内容只是做一下简单写文章创作这样的文书工作,都需要使出很多力量,这种局面其实有点伤心,但是折腾了这样多年,又加上对开源精神的喜爱,也不能放弃。最近 UBUNTU 的问题实在无法解决¹,只好按朋友建议换 OPENSUSE,早就料到了切换系统不会减少问题,而是会面对不同的一批问题,果不然呀。

对于想建议我换 FCITX 的朋友:不要说我不喜欢学习,使用 LINUX 这些年来,从 MINI-chinput、uim 一路到现在折腾过五六种输入平台了,折腾时间久,收获很少,只是获得了能在 LINUX 上正常打汉字而已。我是比较少见的付钱请开发人员帮助解决 BUG 的,还记得七八年前付钱请输入法开发人员解决了一个 BUG,结果只是那个输入平台一年后就式微了,大家都换了,我只好跟着换,又遇到新 BUG,却又不知道是否应该再花钱雇人解决了。真的只是想打打汉字,能不折腾最好。可能逼到不行也会换 FCITX 的,但是不指望它就没问题,只是一批问题将换成另一批问题而已。

  1. ubuntuforums.org/showthread.php?t=2192626

这个问题暂时无法重现。
我这边也没有头绪, 不知道别人有什么线索。
建议你把 region & Language 的配置截图,以及 sudo zypper se ibus 的结果贴上来,让大家看看。

补充:另外还有 ps aux|grep ibus

暂时无法重现,意思是说你安装了五笔或郑码之类 ibus-table-* 输入法的包,之后就真的可以在语言选项里添加这些输入法了,对不对?

我這裡也無法使用 ibus-table-*
我是用 live CD 安裝的,不知道是不是這個原因
請大家幫忙測試

是的,两种五笔和郑码的包我都安装了,均可以正常打字。只是我不会五笔 / 郑码,只是胡乱打的。


我這邊也可以使用 ibus-table-* 的表格了,至少在 ibus 偏好設定中可以選取
幫我測試一下:

  1. 重新安裝所有的 ibus 相關套件
    重新登入看是否可以載入表格
  2. 若不行,請安裝 python-curses
    然後重新安裝 ibus-table*
    重新登入看是否可行
    若真是 2. 的情況,ibus 的相依性得再修正一下

你这个是在 KDE 上,他的情况是 Gnome 3,Gnome 3 的输入法是在 Region & Languages 下统一设置的,ibus preferences 是不起作用的。
但是你的方法也许适用,也许是同一类问题,可以试试。


那補一張圖好了…
wnereiz 請問一下您的系統中有沒有 python-curses?

不是这个原因。我用安装盘,不是用 LIVE CD 安装的,但是咱俩同病。

你一天就搞定了?真幸运。

你能不能帮测试一下手动运行 /usr/lib64/ibus/ibus-engine-table 是否会给出任何消息?

怎样做到?是做 zypper search ibus 然后把带 i 的搜索结果都删除之?

安装了 python-curses 并重启了,故障依旧。

下面的快照其实乏善可陈,除了语言和 swyear 的不一样--他的是中文,我的是 en_US--我于是语言换成中文,检查了 locale(1) 里都显示 zh_CN.utf8 的状态,重启电脑,结果故障依旧。

!](http://weiwu.sdf.org/snapshots/2013-12-13T09:31+0800.png)

输出结果在此。

> zypper se ibus
Loading repository data...
Reading installed packages...

S | Name                            | Summary                      | Type      
--+---------------------------------+------------------------------+-----------
  | ecore-ibus                      | IBUS support module for Ec-> | package   
i | ibus                            | Intelligent Input Bus for -> | package   
  | ibus                            | Intelligent Input Bus for -> | srcpackage
  | ibus-anthy                      | The Anthy engine for IBus -> | package   
  | ibus-anthy                      | The Anthy engine for IBus -> | srcpackage
  | ibus-anthy-devel                | Development files for ibus-> | package   
  | ibus-branding-openSUSE-KDE      | openSUSE branding for KDE    | package   
  | ibus-chewing                    | The Chewing engine for IBu-> | package   
  | ibus-devel                      | Development tools for ibus   | package   
  | ibus-googlepinyin               | This package is for IBus t-> | package   
i | ibus-gtk                        | IBus im module for gtk2      | package   
  | ibus-gtk-32bit                  | IBus im module for gtk2      | package   
i | ibus-gtk3                       | IBus im module for gtk3      | package   
  | ibus-gtk3-32bit                 | IBus im module for gtk3      | package   
  | ibus-hangul                     | The Hangul engine for IBus-> | package   
  | ibus-input-pad                  | Input Pad for IBus           | package   
i | ibus-lang                       | Languages for package ibus   | package   
  | ibus-libpinyin                  | Intelligent Pinyin engine -> | package   
i | ibus-m17n                       | The M17N engine for IBus p-> | package   
  | ibus-mozc                       | The Mozc engine for IBus     | package   
  | ibus-mozc-candidate-window      | An optional candidate wind-> | package   
  | ibus-pinyin                     | The PinYin engine for IBus-> | package   
  | ibus-pinyin                     | The PinYin engine for IBus-> | srcpackage
  | ibus-qt                         | Qt IBus library and Qt inp-> | package   
  | ibus-qt-32bit                   | Qt IBus library and Qt inp-> | package   
  | ibus-qt-devel                   | Development tools for ibus-> | package   
  | ibus-rime                       | IBus rime                    | package   
  | ibus-sunpinyin                  | Sunpinyin module for ibus    | package   
i | ibus-table                      | The Table engine for IBus -> | package   
i | ibus-table-chinese              | Various Chinese input meth-> | package   
  | ibus-table-chinese-array        | Array input methods          | package   
  | ibus-table-chinese-cangjie      | Cangjie based input methods  | package   
  | ibus-table-chinese-cantonese    | Cantonese input methods      | package   
  | ibus-table-chinese-easy         | Easy input method            | package   
  | ibus-table-chinese-erbi         | Erbi input method            | package   
  | ibus-table-chinese-quick        | Quick-to-learn input methods | package   
  | ibus-table-chinese-scj          | Smart Cangjie                | package   
  | ibus-table-chinese-stroke5      | Stroke 5 input method        | package   
  | ibus-table-chinese-wu           | Wu pronunciation input met-> | package   
  | ibus-table-chinese-wubi-haifeng | Haifeng Wubi input method    | package   
i | ibus-table-chinese-wubi-jidian  | Jidian Wubi input method     | package   
  | ibus-table-chinese-yong         | YongMa input method          | package   
  | ibus-table-cns11643             | Cns11643 input method for -> | package   
  | ibus-table-compose              | The Compose table for ibus-> | package   
  | ibus-table-devel                | Development package for ib-> | package   
  | ibus-table-emoji                | Emoji input method for IBu-> | package   
  | ibus-table-extraphrase          | Extra phrases for IBus-tab-> | package   
  | ibus-table-extraphrase-devel    | Development package for ib-> | package   
  | ibus-table-ipa-x-sampa          | The ipa-x-sampa table for -> | package   
  | ibus-table-jyutping             | Jyutping input method for -> | package   
  | ibus-table-latex                | Latex input method for IBu-> | package   
  | ibus-table-others               | Other non-Chinese tables f-> | package   
  | ibus-table-rustrad              | Rustrad input method for I-> | package   
  | ibus-table-thai                 | The Thai table for ibus-ta-> | package   
  | ibus-table-translit             | Translit input method for -> | package   
  | ibus-table-translit-ua          | Translit-ua input method f-> | package   
  | ibus-table-viqr                 | The Viqr (Vietnamese) tabl-> | package   
  | ibus-table-yawerty              | Yawerty input method for I-> | package   
i | ibus-table-zhengma              | ZhengMa input method for I-> | package   
  | ibus-table-zhuyin               | Zhuyin input method for IBus | package   
  | ibus-table-ziranma              | Ziranma input method for I-> | package   
  | ibus-unikey                     | Vietnamese engine for IBus-> | package   
  | kimtoy-backend-ibus             | Ibus Backend for Kimtoy      | package   
i | libibus-1_0-5                   | IBus libraries               | package   
  | libibus-1_0-5-32bit             | IBus libraries               | package   
i | libusb-0_1-4                    | libusb-1.0 Compatibility L-> | package   
  | libusb-0_1-4-32bit              | libusb-1.0 Compatibility L-> | package   
i | libusb-1_0-0                    | USB Library                  | package   
i | libusb-1_0-0-32bit              | USB Library                  | package   
  | libusb-1_0-devel                | USB Library                  | package   
  | libusb-1_0-devel-32bit          | USB Library                  | package   
  | libusb-compat-devel             | libusb-1.0 Compatibility L-> | package   
  | libusbmuxd-devel                | Development files for libu-> | package   
i | libusbmuxd2                     | A library to abstract sock-> | package   
  | libusbmuxd2-32bit               | A library to abstract sock-> | package   
  | libusbprog0                     | USBprog Library              | package   
i | libusbredirhost1                | A protocol for redirection-> | package   
i | libusbredirparser1              | A protocol for redirection-> | package   
i | libustr-1_0-1                   | String library, very low m-> | package   
  | libustr-1_0-1-32bit             | String library, very low m-> | package   
  | libustr-devel                   | Development files for libu-> | package   
  | libustr-devel-static            | Static development files f-> | package   
i | python-ibus                     | Python module for ibus       | package   
  | scribus                         | Open Source Page Layout an-> | package   
  | scribus-devel                   | Open Source Page Layout / -> | package   
i | typelib-1_0-IBus-1_0            | IBus libraries -- Introspe-> | package

想看看你的 ibus 包的版本

sudo zypper se -s ibus

所以可能不是 python-curses 的問題
您用 root 執行

/usr/lib64/ibus/ibus-engine-table -x

重新登入看看

我这里只例出安装的包的版本,cut命令删除的那一列只有Type=package这个内容。

> zypper se -is ibus | cut -d '|' -f -2,4-
Loading repository data...
Reading installed packages...
S | Name                           | Version               | Arch   | Repository          
--+--------------------------------+-----------------------+--------+---------------------
i | ibus                           | 1.5.4-1.1             | x86_64 | openSUSE-13.1-Oss   
i | ibus                           | 1.5.4-1.1             | x86_64 | openSUSE 13.1-1.10  
i | ibus-gtk                       | 1.5.4-1.1             | x86_64 | openSUSE-13.1-Oss   
i | ibus-gtk                       | 1.5.4-1.1             | x86_64 | openSUSE 13.1-1.10  
i | ibus-gtk3                      | 1.5.4-1.1             | x86_64 | openSUSE-13.1-Oss   
i | ibus-gtk3                      | 1.5.4-1.1             | x86_64 | openSUSE 13.1-1.10  
i | ibus-lang                      | 1.5.4-1.1             | noarch | openSUSE-13.1-Oss   
i | ibus-lang                      | 1.5.4-1.1             | noarch | openSUSE 13.1-1.10  
i | ibus-m17n                      | 1.3.4-7.1.3           | x86_64 | openSUSE-13.1-Oss   
i | ibus-m17n                      | 1.3.4-7.1.3           | x86_64 | openSUSE 13.1-1.10  
i | ibus-table                     | 1.5.0-2.1.3           | x86_64 | openSUSE-13.1-Oss   
i | ibus-table                     | 1.5.0-2.1.3           | x86_64 | openSUSE 13.1-1.10  
i | ibus-table-chinese             | 1.4.6-4.1.3           | noarch | openSUSE-13.1-Oss   
i | ibus-table-chinese             | 1.4.6-4.1.3           | noarch | openSUSE 13.1-1.10  
i | ibus-table-chinese-wubi-jidian | 1.4.6-4.1.3           | noarch | openSUSE-13.1-Oss   
i | ibus-table-chinese-wubi-jidian | 1.4.6-4.1.3           | noarch | openSUSE 13.1-1.10  
i | ibus-table-zhengma             | 1.1.0.20090402-14.1.1 | noarch | openSUSE-13.1-Oss   
i | libibus-1_0-5                  | 1.5.4-1.1             | x86_64 | openSUSE-13.1-Oss   
i | libibus-1_0-5                  | 1.5.4-1.1             | x86_64 | openSUSE 13.1-1.10  
i | libusb-0_1-4                   | 0.1.13-27.1.2         | x86_64 | openSUSE-13.1-Oss   
i | libusb-0_1-4                   | 0.1.13-27.1.2         | x86_64 | openSUSE 13.1-1.10  
i | libusb-1_0-0                   | 1.0.9-8.1.2           | x86_64 | openSUSE-13.1-Oss   
i | libusb-1_0-0                   | 1.0.9-8.1.2           | x86_64 | openSUSE 13.1-1.10  
i | libusb-1_0-0-32bit             | 1.0.9-8.1.2           | x86_64 | openSUSE-13.1-Oss   
i | libusb-1_0-0-32bit             | 1.0.9-8.1.2           | x86_64 | openSUSE 13.1-1.10  
i | libusbmuxd2                    | 1.0.8-8.1.2           | x86_64 | openSUSE-13.1-Oss   
i | libusbmuxd2                    | 1.0.8-8.1.2           | x86_64 | openSUSE 13.1-1.10  
i | libusbredirhost1               | 0.6-4.1.2             | x86_64 | openSUSE-13.1-Oss   
i | libusbredirhost1               | 0.6-4.1.2             | x86_64 | openSUSE 13.1-1.10  
i | libusbredirparser1             | 0.6-4.1.2             | x86_64 | openSUSE-13.1-Oss   
i | libusbredirparser1             | 0.6-4.1.2             | x86_64 | openSUSE 13.1-1.10  
i | libustr-1_0-1                  | 1.0.4-29.1.2          | x86_64 | openSUSE-13.1-Oss   
i | libustr-1_0-1                  | 1.0.4-29.1.2          | x86_64 | openSUSE 13.1-1.10  
i | python-ibus                    | 1.5.4-8.1             | x86_64 | openSUSE-13.1-Update
i | typelib-1_0-IBus-1_0           | 1.5.4-1.1             | x86_64 | openSUSE-13.1-Oss   
i | typelib-1_0-IBus-1_0           | 1.5.4-1.1             | x86_64 | openSUSE 13.1-1.10   

又及,我少年时候想做一个许可设置每列最大字符数(切断过长列)功能的column(1)以便apt及zypper这样的程序可以用之,而不用用它们各自写自己的输出格式化代码。这样才更符合每个命令只做一件事并把它做好的UNIX格言。可惜现在每个命令仍是某软件系统的前端,已经不是那个每个命令对应一个件只做一件事的程序时代了。

用了你的办法,并且重启了机器,故障依旧的。以下是输出:

> sudo /usr/lib64/ibus/ibus-engine-table -x
root's password:
<engines>
    <engine>
        <name>zhengma</name>
        <longname>zhengma</longname>
        <language>zh</language>
        <license>GPL-3</license>
        <author>Yu Yuwei &lt;yu-yuwei@gmail.com&gt;</author>
        <icon>/usr/share/ibus-table/icons/zhengma.svg</icon>
        <layout>us</layout>
        <description>郑码是郑易里教授一生不懈于汉字电子输入研究工作的结晶并由郑珑工程师完成后续的编码工作。是在郑易里教授提出五笔输入法思想后进一步深入研究后的成果。郑码非常特别但更成熟,因为它用的是双码的宏字根,字根更自然、更科学,上手后不易遗忘。如果你用过多种中文形码输入法的话,相信郑码会是你最后不二的选择。</description>
    </engine>
    <engine>
        <name>wubi-jidian86</name>
        <longname>wubi-jidian86</longname>
        <language>zh</language>
        <license>Freely redistributable without restriction</license>
        <author>Wozy &lt;wozy.in@gmail.com&gt;</author>
        <icon>/usr/share/ibus-table/icons/wubi-jidian86.svg</icon>
        <layout>us</layout>
        <description>A IME under IBus Table</description>
    </engine>
</engines>

奇怪,我安装了两个输入法:ibus-table-chinese-wubi-jidian和ibus-table-zhengma(因为我和我爱人用的都不是拼音),但是输出只显示其中之一。

谢谢大家努力相助。自从爱人电脑遇到第一个问题,我折腾熬夜解决不了后 在 UBUNTU 论坛发贴求助 ](http://ubuntuforums.org/showthread.php?t=2192626) ,到现在折腾到换系统换到 OPENSUSE 又遇到新问题,前后已经折腾了几十个工作时,已经六天过去了。我自己的工作误了不说,爱人也已经 6 天没有办法用电脑了。她到是没有用电脑娱乐的需求,用这六天读了书,虽然她很理解我折腾这个(她自己过去是 GNOME women outreach program 实习生--不是做工程技术这块的),但是她的正事还是落下了不少,渐渐等不起了。我得为自己设置一个止损线,如果今晚还解决不了,就开始折腾 fcitx 吧。

减少折腾操作系统的办法,就是不要经常换来换去的。可是有什么办法呢,树欲静而风不止呀,你不换来换去,人家上游却要改来换去。不管是操作系统还是输入法,没有哪个能使用多年而新版升级稳定、不带来大问题。我在 11 年底买的带触屏笔记本电脑,UBUNTU 上只要触屏被触过,输入就锁死了,得重启(安装前先用 LIVE CD 测试过竟然没发现这个问题)。两年来坚持着一定不要把手触到屏,并且时时防卫朋友在我屏上指点,直到 13 年 10 月的最新版 UBUNTU 才解决这个 XORG 的 BUG。好不容易这些 XORG 的 BUG 克服了一些,听说它们又要设计新的系统取代 XORG 了,冤冤相报何时了,折腾知多少呀,难道大家不能等产品质量稳定一些,再反复添加修改新功能?极客做产品必须激进吗?最近 UBUNTU 13.10 的 IBUS 又有不少修改,造成了一批问题,比如,新版的 IBUS 设计中文为一种键盘布局,而非现有布局之上的用 Ctrl+space 开启的工具,这样导致中文输入时的键盘布局是强制 en_US 的,会打中文的英国人(英文键盘上有英磅)、德国人(Q、Z 键互换)和我这样会讲西班牙语的中国人真要哭了--因为习惯德文键盘的人,切换到中文时,不能把 Q 当 Z 用,把“左”拼成“球”。中文应该是在原来键盘基础之上的而非切换出来的,中文和键盘布局是两个不同概念,被新版 IBUS 当成了并列可以互换的关系。实际上,适合处理成键盘布局的输入法据我所知只有五笔这一种(其以键位置而非字母为基础设计)--这一新“改进”,真的很像 IBUS 开发人员为了简化系统集成概念,一厢情怨地把键盘布局图标和输入法图标二合一,而闭门造车设计出来的。这些都经历过,我们夫妻现在仍然坚持使用 LINUX,也是一种品德吧,一笑。

因為測試不夠,所以還不太能掌握究竟是什麼狀況
有可能是因為不同因素造成的相同症狀
我這裡能重現的是:
移除 ibus-table-* python-curses

zypper rm ibus-table python-curses

然後註銷,重新進入 gnome
安裝

zypper in ibus-table-chinese-wubi-jidian ibus-table-zhengma

然後註銷,重新進入 gnome
此時在 input source 看不到 wubi-jidian 和 zhengma



安裝 python-curses

zypper in python-curses

執行

sudo /usr/lib/ibus/ibus-engine-table -x

我的機器是 32bit



然後重新安裝 ibus 和 ibus-table

zypper in --force --no-recommends ibus ibus-table

然後註銷,重新進入 gnome
此時就可以選到 wubi-jidian 和 zhengma 了
ibus-table-test3.png
希望能幫上忙


谢谢提供这样详细的步骤,但是我这里完全按照指示一步一步操作,结果到最后一步,却仍然看不到任何 ibus-table 输入法。有趣的是,sudo …ibus-engine-table -x 这一步输出仍然是只有郑码没有五笔。

今天事太多,明早我将开始折腾 fcitx,勇敢面对它可能带来的另外一批不同的问题。

另外,又有一件多难的事。我是古典乐迷加电影收藏者,我们家的音乐等 2TB 资料,都存在家中 NAS 上,其设备支持 SAMBA 只能连 WINDOWS,连 LINUX 有故障,结果只能开 NFS。过去几年还可以,但是 OPENSUSE 里 WIFI 是用户级的,登出用户时就断网了,这时系统再做 UMOUNT,肯定无法 UMOUNT NFS,引起机器关不了机--而它的超时是好几天,等不起,只好拨电源。原来用 UBUNTU 里 WIFI 是系统级的,登录前就可以用,用户注销后仍然连网,所以无问题。这是另外一个话题了,肯定有人报过 BUG,我本打算网上找到其 BUG 再投票的,晚上没空了,就先在这里跑题说一句,见谅。(WIFI 设计成用户级也确实很像程序员闭门造车的产物,WIFI 号令需要保密不想让同一台机器其它用户知道的情况,简直是罕见;但是大家出于公益心免费制做开源产品,作为用户又不好意思求全责备。)

  1. 连 Linux 有故障是 Linux 的故障还是设备的故障?
  2. openSUSE 不会有请求把用户级 wifi 改成系统级 wifi 的「bug」report,因为 wifi 是一件很 personal 的事。wifi 的设计目的就是移动化,多用户系统下,我不需要我把公用的笔电拿到另一个办公楼还自动连接前一个办公楼的 wifi。用户级比系统级难做,那么当初费大力气开发出来自然是有原因的。这不是求全责备的问题,是用户考虑问题不全面光想着自己的使用环境的原因。
  3. 能另开一贴吗?我觉得是你 umount NFS 的方式不对。至少要是我用不会有这个问题。需要你把这个问题详细聊聊。你说的咋一看上去很对,但实际完全不是这回事。卸载 NFS 跟用户注销没有关系,它的判断条件是是否还有网络服务正在运行。无论是用户级还是系统级 wifi,NFS 总是「应该」在断网前就自动卸载掉的。

谢谢关注。网络问题已经发表到 使用 wifi 并存在 nfs 挂接时无法关机

已经改折腾 FCITX。不出意外仍然被卡住了,如果方便不妨 移步看看能否解决 FCITX 的问题 ]([ 己解决 ]fcitx 有运行,但是无法添加 fcitx-table-* 输入法) ?

这两天才开始折腾这个,我找到了原因。

之前 swyear 的调试方法:

sudo /usr/lib/ibus/ibus-engine-table -x

确实能生成engine列表,楼主也试过的。这个是在/usr/share/ibus/component/table.xml中有一行:

<engines exec='/usr/lib64/ibus/ibus-engine-table --xml'/>

但是,如果要ibus解析这个XML来调用此命令,必须依赖compose才可以。

sudo zypper in ibus-table-compose

这样应该就行了,此外python-curses也是需要的。

这是个bug,应该让ibus-table依赖于ibus-table-compose。我已经 ** 报到这里了](https://bugzilla.novell.com/show_bug.cgi?id=857450) ** 。