Ubuntu 16.04 上搜狗输入法卸载不干净?试试这个彻底清理脚本(附ibus/fcitx配置)
Ubuntu 16.04 上搜狗输入法卸载不干净?试试这个彻底清理脚本(附ibus/fcitx配置)
上周帮同事处理一台Ubuntu 16.04的老机器时,遇到了一个典型问题:明明已经用sudo apt-get remove sogoupinyin卸载了搜狗输入法,但重启后输入法图标依然阴魂不散地出现在系统托盘,甚至偶尔还会弹出候选词框。这种"卸载不干净"的情况在Linux系统中其实很常见,特别是像输入法这类深度集成系统服务的软件。
1. 为什么常规卸载会残留?
在终端执行apt-get remove时,系统只会移除软件包本身,但以下三类内容往往会被遗漏:
- 用户配置文件:通常存储在
~/.config和~/.cache目录下 - 系统级配置:可能存在于
/etc或/usr/share等位置 - 依赖关系:自动安装的依赖包不会被自动清除
用这个命令可以查看所有与搜狗相关的文件残留:
sudo find / -name "*sogou*" -o -name "*Sogou*" 2>/dev/null2. 一键清理脚本详解
这是我整理的全方位清理脚本,建议保存为clean_sogou.sh后执行:
#!/bin/bash # 停止输入法进程 killall -9 fcitx 2>/dev/null killall -9 sogou-qimpanel 2>/dev/null # 移除软件包 sudo apt-get remove -y sogoupinyin sudo apt-get purge -y sogoupinyin sudo apt-get autoremove -y # 删除配置文件 rm -rf ~/.config/SogouPY* ~/.config/sogou-qimpanel rm -rf ~/.cache/sogou* sudo rm -rf /usr/share/fcitx-sogoupinyin sudo rm -rf /usr/share/ime-data/*sogou* # 清理依赖残留 sudo apt-get remove -y fcitx-libs fcitx-libs-qt sudo apt-get install -f # 重置输入法框架 fcitx -r >/dev/null 2>&1执行前建议备份重要数据,某些操作需要root权限
3. 彻底检查残留项
即使执行了清理脚本,仍建议手动检查这些关键位置:
| 检查项 | 路径 | 操作建议 |
|---|---|---|
| 用户词库 | ~/.config/SogouPY.users | 可备份后删除 |
| 面板配置 | ~/.config/sogou-qimpanel | 直接删除 |
| 系统组件 | /usr/share/fcitx-sogoupinyin | 需root权限删除 |
| 图标缓存 | ~/.cache/sogou* | 安全删除 |
用这个命令验证是否清除干净:
dpkg -l | grep -i sogou如果无返回结果,说明已彻底移除。
4. 替代方案配置指南
清理完成后,推荐选择以下两种主流输入法框架:
4.1 IBus方案
安装简体中文支持:
sudo apt-get install ibus ibus-pinyin ibus-libpinyin配置步骤:
- 通过菜单打开
IBus Preferences - 在
Input Method标签页添加Chinese (Pinyin) - 在
General标签页设置触发快捷键(默认Super+Space)
4.2 Fcitx方案
安装更丰富的输入法支持:
sudo apt-get install fcitx fcitx-pinyin fcitx-googlepinyin优化配置:
# 安装云拼音支持 sudo apt-get install fcitx-module-cloudpinyin # 安装经典皮肤 sudo apt-get install fcitx-ui-classicFcitx需要注销后重新登录才能生效
5. 常见问题排查
输入法切换无效?检查当前桌面环境是否支持:
echo $XDG_CURRENT_DESKTOPGNOME用户可能需要额外配置:
gsettings set org.gnome.settings-daemon.plugins.keyboard active false候选框不显示?可能是字体缺失导致:
sudo apt-get install fonts-noto-cjk词库导入技巧将原有搜狗词库转换为ibus/fcitx格式:
# 需要安装python3-pinyin包 from pypinyin import pinyin def convert_dict(input_file, output_file): with open(input_file, 'r') as f_in, open(output_file, 'w') as f_out: for line in f_in: word, freq = line.strip().split('\t') py = ' '.join([item[0] for item in pinyin(word)]) f_out.write(f"{word}\t{py}\t{freq}\n")最后分享一个实用技巧:在.bashrc中添加以下别名,可以快速切换输入法状态:
alias im-status="fcitx-remote 2>/dev/null || ibus engine 2>/dev/null" alias im-en="fcitx-remote -c 2>/dev/null || ibus engine xkb:us::eng 2>/dev/null" alias im-zh="fcitx-remote -o 2>/dev/null || ibus engine pinyin 2>/dev/null"