[方案共享]输入法选择出现错误 解决方法 找不到替换项 “/etc/X11/xinit/xinput.d/fcitx”

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
daf3707
论坛版主
帖子: 12731
注册时间: 2007-06-13 15:57
来自: 在他乡

[方案共享]输入法选择出现错误 解决方法 找不到替换项 “/etc/X11/xinit/xinput.d/fcitx”

#1

帖子 daf3707 » 2008-10-18 8:59

安装了fcitx3.5-1的deb,废了源里的,结果选择输入法时提示

代码: 全选

sudo im-switch -s fcitx
update-alternatives: 找不到替换项 “/etc/X11/xinit/xinput.d/fcitx”。
找了一下,解决方案如下,以作备案 :em02
原文见http://blog.chinaunix.net/u/30503/showart_1273239.html
根据ubuntu作少量更改。

首先,要明白自己的策略,究竟是全局配置,也就是系统中一次设置之后,所有用户都生效;还是只为某个用户进行设置。假如系统中只有一种输入法,那么当然只要全局设置就可以了,可是需要考虑到扩展的情况吧
无论是全局设置还是为某个用户进行设置,先应该有两个文件,文件在安装输入法时就会有了。
/etc/X11/xinit/xinput.d/fcitx 的内容是

代码: 全选

XIM=fcitx
XIM_PROGRAM=/usr/bin/fcitx
XIM_ARGS=""
GTK_IM_MODULE=XIM
QT_IM_MODULE=XIM
DEPENDS="fcitx"
而 /etc/X11/xinit/xinput.d/scim 的内容如下。

代码: 全选

XIM=SCIM
XIM_PROGRAM=/usr/bin/scim
XIM_ARGS="-d"
XIM_PROGRAM_SETS_ITSELF_AS_DAEMON=yes
GTK_IM_MODULE=xim
QT_IM_MODULE=xim
DEPENDS="scim,scim-anthy|scim-canna|scim-chewing|scim-pinyin|scim-hangle|scim-prime|scim-skk|scim-tables-additional|scim-m17n|scim-uim|scim-tables-ja|scim-tables-ko|scim-tables-zh"
为了全局的设置,要介绍一下update-alternatives 命令。这是一个只有 root 才能执行的命令。update-alternatives 的意思是 “可选择的内容”。假如你的系统中有几个命令功能十分类似,却又不能随意删除,那么可以用 update-alternatives 来指定一个全局的设置。它有几种功能,可以用命令行参数来指定。具体用户你可以man一下,举例:

代码: 全选

update-alternatives --install /etc/X11/xinit/xinput.d/zh_CN xinput-zh_CN /etc/X11/xinit/xinput.d/scim 100
update-alternatives --install /etc/X11/xinit/xinput.d/zh_CN xinput-zh_CN /etc/X11/xinit/xinput.d/fcitx 99
这两个命令的意思就是将刚才新建的 scim 和 fcitx 两个文件作为 zh_CN 的可选内容。它们的优先级分别是 100 和 99,它们共同的名字是 xinput-zh_CN。

另外一种功能是选择默认值。上面的命令仅仅向数据库中添加了可选内容,接下来当然是进行选择了。可以用两种办法,第一种是 update-alternatives --auto <name>,这时系统会根据优先级来选择 <name> 的默认值。例如,运行

代码: 全选

update-alternatives --auto xinput-zh_CN
会把默认输入法设置为 scim。(为什么?因为我们在上面指定的优先级是 100,是最高的,fcitx 只有 99)
第二种是 update-alternatives --config <name>,这时会显示一个对话框,大概是这样
sudo update-alternatives --config xinput-zh_CN
现有 5 个可选项,它们都提供了“xinput-zh_CN”<

选择 可选项
-----------------------------------------------
* 1 /etc/X11/xinit/xinput.d/scim
2 /etc/X11/xinit/xinput.d/scim-immodule
3 /etc/X11/xinit/xinput.d/scim-bridge
4 /etc/X11/xinit/xinput.d/scim-pinyin
+ 5 /etc/X11/xinit/xinput.d/fcitx

要维持缺省值[*],按回车键,或者键入选择的编号:
可以看到系统中已经通过 update-alternatives --install 添加了5个可选内容。优先级最高的是 `*' 指示的那一个,目前的默认全局使用的是 `+' 指示的那一个。输入数字5 就会将默认值改为 fcitx,输入回车的话就不做改动。

哪种好一点?它们不会冲突,哪个都可以。要修改优先级怎么办?比如要把 fcitx 的优先级提高成 101,应该怎么办?答案很简单,再运行一次 update-alternatives --install 就可以了

代码: 全选

 update-alternatives --install /etc/X11/xinit/xinput.d/zh_CN xinput-zh_CN /etc/X11/xinit/xinput.d/fcitx 101
需要注意的是,这样做不会修改当前的默认值,只有再运行 update-alternatives --auto 才会做出选择。或者,用 update-alternatives --config 也可以。
头像
yaoms
帖子: 4952
注册时间: 2007-10-19 14:51
来自: 深圳

Re: [方案共享]输入法选择出现错误 解决方法 找不到替换项 “/etc/X11/xinit/xinput.d/fcitx”

#2

帖子 yaoms » 2008-10-18 9:28

好帖子
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'
回复