前言
系统:Ubuntu 20.04 LTS
问题重现:
系统一开始的时候是好的,后来突然系统崩溃了,更整好以后就Ubuntu的语言支持(Language Support)选项里就没有IBUS选项了,变成默认的XIM
Ubuntu的语言支持是由im-config管理的,执行im-config报以下错误:
E: ibus 使用的设置在 avail_auto 找不到
问题分析
Linux系统使用的默认语言是英文,为了兼容中日韩三个东方国家的语言,于是有了ibus/
fcitx等输入法框架。
通过ibus我们可以配置输入法为英文,中文,日文,韩文,拼音,五笔等不同的输入法软件。
但是个人理解是ibus只是向上管理不同的输入法,向下做系统及图形桌面的兼容需要另外的组件进行配置。
在Ubuntu里就是im-config,当你在图形界面配置ibus/fcitx/xim/None的时候,调的就是im-config,它对于中日韩三国语言及文字的支持是不可或缺的。
可以看下im-config组件的介绍:
im-config组件介绍
所以如果你遇到这个问题的话好多博客通过一堆的介绍及安装步骤,解决步骤后都会有这么一步:
sudo im-config -s ibus
但是如果我们照着做的话可能会出现如下报错:
ibus 使用的设置在 avail_auto 找不到
其实你也可以在Ubuntu的启动日志里看到一样的错误:
Mar 06 22:16:30 i75930 gnome-control-center.desktop[3594]: E: ibus 使用的设置在 avail_auto 找不到。
Mar 06 22:16:30 i75930 gnome-control-center.desktop[3663]: E: ibus 使用的设置在 avail_auto 找不到。
Mar 06 22:16:31 i75930 gnome-control-center.desktop[3765]: E: ibus 使用的设置在 avail_auto 找不到。
Mar 06 22:16:31 i75930 gnome-control-center.desktop[3834]: E: ibus 使用的设置在 avail_auto 找不到。
Mar 06 22:16:31 i75930 gnome-control-center.desktop[3926]: E: ibus 使用的设置在 avail_menu 找不到。
Mar 06 22:16:43 i75930 dbus-daemon[1971]: [session uid=1000 pid=1971] Activating via systemd: service name='org.gtk.vfs>
Mar 06 22:16:43 i75930 systemd[1960]: Starting Virtual filesystem metadata service...
Mar 06 22:16:43 i75930 dbus-daemon[1971]: [session uid=1000 pid=1971] Successfully activated service 'org.gtk.vfs.Metad>
Mar 06 22:16:43 i75930 systemd[1960]: Started Virtual filesystem metadata service.
Mar 06 22:16:53 i75930 dbus-daemon[1971]: apparmor="DENIED" operation="dbus_method_call" bus="session" path="/org/gtk/>
Mar 06 22:16:54 i75930 gnome-control-center.desktop[4121]: E: ibus 使用的设置在 avail_auto 找不到。
Mar 06 22:16:54 i75930 gnome-control-center.desktop[4190]: E: ibus 使用的设置在 avail_auto 找不到。
Mar 06 22:16:55 i75930 gnome-control-center.desktop[4292]: E: ibus 使用的设置在 avail_auto 找不到。
Mar 06 22:16:55 i75930 gnome-control-center.desktop[4361]: E: ibus 使用的设置在 avail_auto 找不到。
Mar 06 22:16:55 i75930 gnome-control-center.desktop[4453]: E: ibus 使用的设置在 avail_menu 找不到。
这是因为Ubuntu默认使用的就是im-config,而im-config默认使用的就是 ibus,但是因为各种不可言说的原因im-config和ibus之间的配置损坏了。
问题解决
网上这方面的文章很少,没有解决我的问题,那就只能自己解决了。
方法1:错误日志
ll /var/log
发现没有im-config的错误日志
方法2:配置文件
系统自带的服务及通过软件管理器(apt/yum)安装的服务,配置文件一般在/etc下。
可以查找一下:
sudo find /etc -name "im-config"
看一下里面什么内容:
看着也没有什么问题
先跳过吧,试试其他的方式,不行的话再回头互相印证一下
方法3:重装试试
轻量级的软件,可以直接搞,重量级的软件最好慎重
ibus有问题只影响到输入法,其他系统其他组件没什么关系,可以直接搞
im-config既然是系统服务,可以看看apt/dpkg里有没有:
dpkg -l | grep im-config
还真有,重装一下试试:
sudo apt-get --reinstall install im-config
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DX7o1Swh-1615047238232)(en-resource://database/11864:1)]
然后可以再试试那个命令:
sudo im-config -s ibus
OK,没有报错
再打开语言支持就有ibus选项了
方法4:查看源码
其他你还可以看下它的源码是这个错误是在哪儿报的。
所有的命令行命令都可以通过which及whereis命令知道是在哪儿的:
vim /usr/bin/im-config
打开我们会发现它是一个shell脚本,而不是二进制文件,可以看下它的,当然如果你懂shell的话
由于方法3已经把问题解决了,问题重现,这里不再多言