Linux上手动编译安装librime、librime-lua以及ibus-rime
本文最后更新于 2024年9月28日 下午
Linux上的输入法有很多,大体都使用了Fcitx或者iBus作为输入法的引擎。相当于有了一个很不错的“地基”,你可以在这个“地基”上盖上自己的“小别墅”。而rime输入法,就是一个“毛坯别墅”,你可以在rime的基础上,再装修,打造自己的住所。
现在的问题是,使用Linux软件包自带的iBus(很多Linux发行版本,默认使用iBus输入法引擎)和ibus-rime,其内部的librime(ibus-rime的核心,也是rime的核心算法)版本比较低,需要我们手动编译才可以使用rime的完整功能。
本篇文章就给大家演示,如何在Linux(Debian、Ubuntu发行版本)上,如何手动编译librime、librime-lua以及ibus-rime。
ibus-rime
ibus-rime 是一个基于 Rime 输入法引擎的iBus后端模块,用于在使用iBus框架的Linux发行版中提供中文输入支持。
理论上,我们安装ibus-rime只需要:
1 |
|
之后,重启用户界面(你可以注销当前桌面环境并重新登录系统桌面),你就可以在系统的设置内添加ibus-rime:
但是,有一个小问题,部分软件包管理器内ibus-rime使用的librime,也就是rime核心算法库,使用的版本过于老旧(1.8.5左右),性能问题不好说,一些rime的新特性就无法使用;
比如薄荷输入法配置,引入Lua脚本就是使用高版本librime新特性,如果librime版本过低,就无法发挥薄荷输入法配置的全部功能,甚至无法使用。
1 |
|
那么,如果librime版本不够,导致ibus-rime无法使用rime的新特性,如何解决呢? 方法很多,比如:
- fcitx5版本(Flatpak): 基于Flatpak下载并使用Fcitx5(软件包管理器的Fcitx5-rime可能也使用低版本librime和librime-lua)
- ibus-rime.AppImage: AppImage 格式的中州韵输入法(ibus-rime)的打包方案;目前不支持arm架构。
总的来说,方法还是很多的,这里提供手动编译的方法,方便依旧想使用ibus-rime的用户,或者使用ARM设备的Linux用户安装。
环境准备
首先,我们看看环境准备,主要分为卸载旧依赖
和安装编译依赖
两个部分。
卸载旧依赖
卸载旧版本的ibus-rime;同时,因为我们需要从源码编译,而它依赖于librime和plum两个部分,所以我们也需要卸载这两个的相关软件包:
1 |
|
如果你之前就没有安装过ibus-rime,那么这一步就不需要执行了。但是我相信,你都看到这个教程了,十有八九是有安装😏。
安装编译依赖
首先根据官方文档:
- librime-lua Github: https://github.com/hchunhui/librime-lua/wiki
- rime Github: https://github.com/rime/home/wiki/RimeWithIBus
特别注意,我们需要:
- cmake>=3.25: 虽然官方的CMakeLists.txt内描述cmake的最低版本只需要3.12,但是根据issue #856描述,最好需要
cmake>=3.25
- git: 后续我们需要使用git来同步源代码来进行编译。
综上,我们安装依赖:
1 |
|
可以检查一下cmake的版本:
1 |
|
如果cmake的版本过低,可以在cmake项目官网安装高版本的cmake,比如:
1 |
|
到此,我们的前期准备就完成了。
支持创作
制作教程不易,如果热心的小伙伴,想支持创作,可以加入我们的电圈(还可以解锁远程协助、好友位😃):
- Mintimate的电圈: https://afdian.com/a/mintimate
- Mintimate的微信赞赏码 👉 如果认为本教程对你很有帮助,可以请我喝咖啡 ☕
当然,也欢迎在B站或YouTube上关注我们:
- Bilibili: https://space.bilibili.com/355567627
- YouTube: https://www.youtube.com/@mintimate/featured
更多:
ibus-rime源码
需要编译安装ibus-rime,那么首先第一步就是获取项目的源代码了,ibus-rime的源代码就在GitHub上,目前隶属于rime项目内,我们克隆源代码:
1 |
|
ibus-rime的编译需要依赖与两个外部库:
- librime: librime的算法核心,还可以加上librime-lua插件,使其支持lua语法插件,进一步扩展rime。
- plum: 东风破,相当于rime的软件包管理器,ibus-rime的编译安装过程中,需要使用东风破进行数据初始化。
ibus-rime已经做了仓库的关联:
1 |
|
所以,我们直接使用git submodule update --init
进一步克隆子仓库即可:
如果你没什么网络问题,通常情况还是很顺利的。接下来,我们需要分别先编译librime
和plum
。
librime
注意切换Terminal的工作目录到刚刚ibus-rime初始化后,librime目录内。
编译librime
其实很简单,但是ibus-rime
默认情况使用的librime
分支,或许不是最新。我们这里可以使用git checkout
命令切换一下:
1 |
|
同时需要注意:默认情况下,如果需要Lua的支持,那么需要融合librime-lua
插件。
薄荷输入法配置、雾凇拼音配置等等rime配置,有大量使用Lua扩展的功能,所以我们这个librime-lua
插件是肯定要安装的啦。
librime-lua
根据项目地址:
我们在librime源码内,使用自带的插件安装脚本,执行:
1 |
|
合并插件
在下载librime-lua后,我们合并插件内容进入librime:
1 |
|
如果编译不加以限制,可能会导致内存占用过高导致编译卡死,甚至系统卡死。
所以,建议大家根据自己系统的核心数,限制编译的进程(线程)编译:
1 |
|
编译安装
最后,我们完成最后的编译安装即可:
1 |
|
同样,建议可以使用
-j
限制编译的进程数量哦。
plum
注意切换Terminal的工作目录到刚刚ibus-rime初始化后,plum目录内。
plum的编译比较简单了。你只需要:
1 |
|
编译ibus-rime
前期的准备都完成了。接下来终于可以回到ibus-rime
了。编译的过程很简单,和plum
差不多:
1 |
|
同样,建议可以使用
-j
限制编译的进程数量哦。
使用ibus-rime
当ibus-rime
编译安装好后,你可能无法在Gnome桌面的设置内,添加Rime引擎;这个时候你可以注销桌面环境,重新登录。通常情况就没什么问题了。
之后就可以使用了。
Opt:plum安装薄荷
上文我们已经编译安装了ibus-rime,接下来我们就使用薄荷输入法配置来快速初始化rime。
方法很多,比如常规的方法就是下载薄荷输入的配置,导入ibus-rime的配置文件目录内,重新部署即可。使用plum安装薄荷配置,只需要一条命令:
1 |
|
每一次都是全量更新替换,这样的更新配置方便很多。而且都是同名文件替换,意味着如果你使用
custom
文件覆写薄荷输入法配置,那么自定义的配置会被保留下来。
我之前在薄荷输入法文档内已经做了详细介绍。本章节就来点不一样的,使用plum安装薄荷输入配置。
plum的原理,实际上就是根据方案的配置处方文件,对方案内部的文件进行“抓药”。比如薄荷的全量处方:
1 |
|
plum操作解析:
- plum使用git对薄荷的仓库进行克隆;
- 检录出薄荷仓库,读取
plum/full.recipe.yaml
; - 根据内部配置进行文件部署和覆盖,比如
dicts/*.*
,就是把dicts
文件内部所有文件部署到本地rime配置目录;terra*.yaml
就是把仓库根目录内terra
开头和.yaml
结尾的文件拷贝到本地rime配置目录。
那么,我们这次编译应该如何使用呢? 还记得我们刚刚是有编译plum的,只需要再次cd
到plum目录内:
可以看到,二进制文件rime-install
,我们就使用二进制配置薄荷输入法方案:
1 |
|
默认情况,plum下载的配置文件:
- 如果系统是Windows,那么默认配置到小狼毫的配置目录内;
- 如果系统是macOS,那么默认配置到鼠须个人的配置目录内,即
$HOME/Library/Rime
内。 - 如果系统是Linux,那么默认配置到ibus的配置目录内,即
$HOME/.config/ibus/rime
内。
是不是发现一个问题? 如果我的设备是使用Fcitx5,plum自动配置到默认的地址,岂不是还需要手动移动配置文件?其实plum也可以完成,只需要运行脚本时候,环境变量内声明即可:
1 |
|
END
总而言之,本文不仅提供了详细的步骤来确保ibus-rime及其核心组件得到最新升级,还强调了这一升级对于提升中文输入质量和个性化配置的重要性。通过遵循本文的指导,用户将能够充分利用Rime输入法引擎的最新特性,享受到更加流畅、高效且具有高度定制性的中文输入体验。
不知道大家在Linux上,还是使用ibus-rime作为输入方案么? 还是使用Fcitx5-rime了呢? 其实现在Fcitx5非常完善,但是我还是习惯使用ibus…… 习惯这东西,真实一个可怕的东西。不过,也可能是我的输入习惯,ibus已经完全够用,加上我平时操作Linux,大部分情况都是SSH远程登录,自然对输入法的需求比较少。
你是用什么输入法框架呢? 使用的rime输入方案又是什么呢? 是否是薄荷输入法呢?