Linux桌面环境手动编译安装librime、librime-lua以及ibus-rime,提升中文输入法体验
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只需要:
# 更新软件包管理器
sudo apt update
# 安装ibus-rime
sudo apt install ibus-rime
之后,重启用户界面(你可以注销当前桌面环境并重新登录系统桌面),你就可以在系统的设置内添加ibus-rime:

但是,有一个小问题,部分软件包管理器内ibus-rime使用的librime,也就是rime核心算法库,使用的版本过于老旧(1.8.5左右),性能问题不好说,一些rime的新特性就无法使用;
比如薄荷输入法配置,引入Lua脚本就是使用高版本librime新特性,如果librime版本过低,就无法发挥薄荷输入法配置的全部功能,甚至无法使用。
# 查找系统自带的librime版本
find /usr/lib /usr/local/lib /opt -name "librime.so*"

那么,如果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两个部分,所以我们也需要卸载这两个的相关软件包:
# 卸载ibus-rime
sudo apt purge ibus-rime
# 卸载librime有关依赖
sudo apt purge librime*
如果你之前就没有安装过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来同步源代码来进行编译。
综上,我们安装依赖:
# 安装cmake和gcc
sudo apt install build-essential cmake
# 安装其他编译依赖
sudo apt install libboost-all-dev libgoogle-glog-dev libgtest-dev libyaml-cpp-dev libleveldb-dev libmarisa-dev libz-dev libopencc-dev libibus-1.0-dev libnotify-dev
可以检查一下cmake的版本:
cmake --version

如果cmake的版本过低,可以在cmake项目官网安装高版本的cmake,比如:
# 切换工作路径
cd /opt
# 下载cmake二进制文件
wget https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-linux-aarch64.sh
# 在此目录安装
bash cmake-3.30.0-linux-aarch64.sh
# 软链接到/usr/local/bin
ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
到此,我们的前期准备就完成了。
支持创作
制作教程不易,如果热心的小伙伴,想支持创作,可以加入我们的「爱发电」电圈(还可以解锁远程协助、好友位😃):
- Mintimate的电圈: https://afdian.net/a/mintimate](https://afdian.net/a/mintimate)
当然,也欢迎在B站或YouTube上关注我们:
- Bilibili: https://space.bilibili.com/355567627
- YouTube: https://www.youtube.com/@mintimate/featured
更多:
- Mintimate’s Blog 关于页面
ibus-rime源码
需要编译安装ibus-rime,那么首先第一步就是获取项目的源代码了,ibus-rime的源代码就在GitHub上,目前隶属于rime项目内,我们克隆源代码:
git clone https://github.com/rime/ibus-rime.git
ibus-rime的编译需要依赖与两个外部库:
- librime: librime的算法核心,还可以加上librime-lua插件,使其支持lua语法插件,进一步扩展rime。
- plum: 东风破,相当于rime的软件包管理器,ibus-rime的编译安装过程中,需要使用东风破进行数据初始化。
ibus-rime已经做了仓库的关联:
[submodule "librime"]path = librimeurl = https://github.com/rime/librime.git
[submodule "plum"]path = plumurl = https://github.com/rime/plum.git
所以,我们直接使用git submodule update --init进一步克隆子仓库即可:

**如果你没什么网络问题,通常情况还是很顺利的。**接下来,我们需要分别先编译librime和plum。
librime
注意切换Terminal的工作目录到刚刚ibus-rime初始化后,librime目录内。
编译librime其实很简单,但是ibus-rime默认情况使用的librime分支,或许不是最新。我们这里可以使用git checkout命令切换一下:
git checkout master

同时需要注意:默认情况下,如果需要Lua的支持,那么需要融合librime-lua插件。
薄荷输入法配置、雾凇拼音配置等等rime配置,有大量使用Lua扩展的功能,所以我们这个librime-lua插件是肯定要安装的啦。
librime-lua
根据项目地址:
- librime-lua Github: https://github.com/hchunhui/librime-lua
我们在librime源码内,使用自带的插件安装脚本,执行:
# 自动下载librime插件
bash install-plugins.sh hchunhui/librime-lua

合并插件
在下载librime-lua后,我们合并插件内容进入librime:
make merged-plugins
如果编译不加以限制,可以会导致内存占用过高导致编译卡死,甚至系统卡死。

所以,建议大家根据自己系统的核心数,限制编译的进程(线程)编译:
# 使用两个进程进行编译
make merged-plugins -j2


编译安装
最后,我们完成最后的编译安装即可:
# 编译
make
# 安装
sudo make install
同样,建议可以使用
-j限制编译的进程数量哦。


plum
注意切换Terminal的工作目录到刚刚ibus-rime初始化后,plum目录内。

plum的编译比较简单了。你只需要:
# 编译并安装
make && sudo make install


编译ibus-rime
前期的准备都完成了。接下来终于可以回到ibus-rime了。编译的过程很简单,和plum差不多:
# 编译
make
# 安装
sudo make install
同样,建议可以使用
-j限制编译的进程数量哦。

使用ibus-rime
当ibus-rime编译安装好后,你可能无法在Gnome桌面的设置内,添加`Rime引擎;这个时候你可以注销桌面环境,重新登录。通常情况就没什么问题了。

之后就可以使用了。
Opt:plum安装薄荷
上文我们已经编译安装了ibus-rime,接下来我们就使用薄荷输入法配置来快速初始化rime。
- 薄荷输入法: oh-my-rime 输入法
快速初始化rime⚡,同时适配多个平台💻
方法很多,比如常规的方法就是下载薄荷输入的配置,导入ibus-rime的配置文件目录内,重新部署即可。使用plum安装薄荷配置,只需要一条命令:
rime-install Mintimate/oh-my-rime:plum/full
每一次都是全量更新替换,这样的更新配置方便很多。而且都是同名文件替换,意味着如果你使用
custom文件覆写薄荷输入法配置,那么自定义的配置会被保留下来。
我之前在薄荷输入法文档内已经做了详细介绍。本章节就来点不一样的,使用plum安装薄荷输入配置。
plum的原理,实际上就是根据方案的配置处方文件,对方案内部的文件进行“抓药”。比如薄荷的全量处方:
# encoding: utf-8
---
recipe:Rx: plum/fullargs:description: >-全量安装、更新
install_files: >-dicts/*.*opencc/*.*lua/*.*lua/aux_code/*.*default.yamlsquirrel.yamlweasel.yamlibus_rime.yamlrime_mint*.yamldouble_pinyin*.schema.yamlt9.schema.yamlterra*.yamlstroke*.yamlwubi86*.yamlwubi98*.yamlsymbols.yamlradical*.yamlmelt_eng*.yaml
plum操作解析:
- plum使用git对薄荷的仓库进行克隆;
- 检录出薄荷仓库,读取
plum/full.recipe.yaml; - 根据内部配置进行文件部署和覆盖,比如
dicts/*.*,就是把dicts文件内部所有文件部署到本地rime配置目录;terra*.yaml就是把仓库根目录内terra开头和.yaml结尾的文件拷贝到本地rime配置目录。
那么,我们这次编译应该如何使用呢? 还记得我们刚刚是有编译plum的,只需要再次cd到plum目录内:

可以看到,二进制文件rime-install,我们就使用二进制配置薄荷输入法方案:
./rime-install Mintimate/oh-my-rime:plum/full
默认情况,plum下载的配置文件:
- 如果系统是Windows,那么默认配置到小狼毫的配置目录内;
- 如果系统是macOS,那么默认配置到鼠须个人的配置目录内,即
$HOME/Library/Rime内。 - 如果系统是Linux,那么默认配置到ibus的配置目录内,即
$HOME/.config/ibus/rime内。

是不是发现一个问题? 如果我的设备是使用Fcitx5,plum自动配置到默认的地址,岂不是还需要手动移动配置文件?其实plum也可以完成,只需要运行脚本时候,环境变量内声明即可:
# 提前明确rime需要配置到那个目录
rime_dir="$HOME/.local/share/fcitx5/rime" bash rime-install
END
总而言之,本文不仅提供了详细的步骤来确保ibus-rime及其核心组件得到最新升级,还强调了这一升级对于提升中文输入质量和个性化配置的重要性。通过遵循本文的指导,用户将能够充分利用Rime输入法引擎的最新特性,享受到更加流畅、高效且具有高度定制性的中文输入体验。
不知道大家在Linux上,还是使用ibus-rime作为输入方案么? 还是使用Fcitx5-rime了呢? 其实现在Fcitx5非常完善,但是我还是习惯使用ibus…… 习惯这东西,真实一个可怕的东西。不过,也可能是我的输入习惯,ibus已经完全够用,加上我平时操作Linux,大部分情况都是SSH远程登录,自然对输入法的需求比较少。
你是用什么输入法框架呢? 使用的rime输入方案又是什么呢? 是否是薄荷输入法呢?
相关文章:
Linux桌面环境手动编译安装librime、librime-lua以及ibus-rime,提升中文输入法体验
Linux上的输入法有很多,大体都使用了Fcitx或者iBus作为输入法的引擎。相当于有了一个很不错的“地基”,你可以在这个“地基”上盖上自己的“小别墅”。而rime输入法,就是一个“毛坯别墅”,你可以在rime的基础上,再装修…...
一文入门【NestJs】Providers
Nest学习系列 ✈️一文入门【NestJS】 ✈️一文入门【NestJs】Controllers 控制器 🚩 前言 在NestJS的世界里,理解“Providers”是构建健壮、可维护的后端服务的关键。NestJS,作为Node.js的一个现代框架,采用了Angular的一些核…...
云原生(Cloud native)
云原生(Cloud native) 一 定义 目前比较权威的定义主要来自Pivotal公司和云原生计算基金会(Cloud Native Computing Foundation,简称CNCF)。 1.1 Pivotal 4个要点: DevOps、持续交付、微服务、容器化。六…...
JVM OutOfMemoryError异常模拟
1.Java堆溢出 Java堆用于储存对象实例,我们只要不断地创建对象,并且保证 GC Roots 到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么随着对象数量的增加,总容量触及最大堆的容量限制后就会 产生内存溢出异常。 限制Java …...
架构师机器学习操作 (MLOps) 指南
MLOps 是机器学习操作的缩写,是一组实践和工具,旨在满足工程师构建模型并将其投入生产的特定需求。一些组织从一些自主开发的工具开始,这些工具在每次实验后对数据集进行版本控制,并在每个训练周期后对检查点模型进行版本控制。另…...
【学习笔记】虚幻SkeletalMesh学习(一)基础介绍
文章目录 零、前言一、资源介绍1.1 骨架资源1.2 骨架网格体资源 二、UE4中的定义2.1 骨骼数据2.2 模型网格数据 三、渲染3.1 RenderData的初始化3.2 渲染对象的创建3.3 渲染对象的更新3.3.1 游戏线程的更新(*FSkeletalMeshObjectGPUSkin::Update*)3.3.2 …...
Apache防盗链、网页压缩、网页缓存
目录 网页压缩 类型 示例 动态添加模块操作步骤 重装Apache操作步骤 网页缓存 示例 操作步骤 隐藏版本信息 操作步骤 Apache防盗链 定义 原理 配置防盗链实验环境 实验环境 本地图片盗链示例 操作步骤 防盗链示例 操作步骤 网页压缩 网站的访问速度是由多个…...
LocalAI - 笔记
1.localAI https://localai.io/ 2 使用笔记本电脑搭建本地LLMs大模型环境 使用笔记本电脑搭建本地LLMs大模型环境 - 大模型知识库|大模型训练|开箱即用的企业大模型应用平台|智能体开发|53AI 3LocalAI视频 【LocalAI】(3):超级简单&…...
Windows图形界面(GUI)-SDK-C/C++ - 编辑框(edit)
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 编辑框(edit) 控件样式 创建控件 初始控件 消息处理 示例代码 编辑框(edit) 控件样式 编辑框(Edit Control)是Windows中最常用的控件之一,用于接收用户…...
区块链学习05-web3中solidity和move语言
Solidity 和 Move 语言的比较:Web3 开发中的两种选择 Solidity 和 Move 都是用于开发区块链平台智能合约的编程语言。它们具有一些相似之处,但也存在一些关键差异。 相似之处: Solidity 和 Move 都是图灵完备语言,这意味着它们可以表达计算…...
web滚动页面到指定位置
方法:scrollTo(x-coord,y-coord) 方法是Web API中Element接口的一部分,但它主要用于Window对象或可滚动的元素(如具有overflow属性为auto或scroll的<div>)。此方法用于将窗口滚动到文档中的特定位置,或者将某个元…...
操作系统真象还原:实现文件写入
14.7 实现文件写入 这是一个网站有所有小节的代码实现,同时也包含了Bochs等文件 本节要实现的 sys_write 是系统调用 write 的内核实现,咱们之前的 write 是个简易版,它是为了临时完成输出打印的功能,不支持文件描述符。如今要让…...
FastAPI 学习之路(四十九)WebSockets(五)修复接口测试中的问题
其实代码没有问题,但是我们忽略了一个问题,就是在正常的开发中,肯定是遇到过这样的情况,我们频繁的有客户端链接,断开连接,需要统一的管理这些链接,那么应该如何管理呢。其实可以声明一个类去管…...
STM32智能楼宇照明系统教程
目录 引言环境准备智能楼宇照明系统基础代码实现:实现智能楼宇照明系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:楼宇照明管理与优化问题解决方案与优化收尾与总结 1. 引言 智能楼宇照明系…...
【C语言】原码、反码、补码详解 -《码上有道 ! 》
目录 原码、反码、补码详解及其在C语言中的应用一、原码(Sign-Magnitude)1.1 定义与表示1.2 历史来源与作用1.3 示例1.4 C语言示例1.5 代码运行结果 二、反码(Ones Complement)2.1 定义与表示2.2 历史来源与作用2.3 示例2.4 C语言…...
C++找到错误的具体信息
fprintf(stderr, "Errno: %d, Error message: %s\n", errno, strerror(errno));为什么不用printf来打印输出? 使用 fprintf(stderr, …),将错误消息输出到标准错误流 stderr。这种做法是为了将错误信息输出到一个专门用于记录错误的流中&…...
Windows 安装Zookeeper
安装 下载地址:Apache ZooKeeper 我下载的版本:zookeeper-3.4.12 下载后,解压 配置 1、 在D:\zookeeper-3.4.12文件夹中创建一个“data”文件夹和“log”文件夹 2、 复制zoo_sample.cfg,改名:zoo.cfg 修改zoo.c…...
从人工巡检到智能预警:视频AI智能监控技术在水库/河湖/水利防汛抗洪中的应用
一、背景需求分析 近日,我国多省市遭遇连日暴雨,导致水库、湖泊、河道等水域水位暴涨,城市内涝频发。随着夏季汛期的到来,降雨天气频繁,水利安全管理面临严峻挑战。为保障水库安全、预防和减少洪涝灾害,采…...
【轻松拿捏 】Java-static关键字(面试)
Java-static关键字 1. 定义和基本概念 回答要点: 示例回答: 2. static 变量 回答要点: 示例回答: 代码示例: 3. static方法 回答要点: 示例回答: 代码示例: 4. static 代…...
【阶乘】个人练习-Leetcode-LCP 22. 黑白方格画
题目链接:https://leetcode.cn/problems/ccw6C7/description/ 题目大意:给出一块白方格面积为n*n,给出一个数字k,每一次操作可以把方格的某一整行或者某一整列涂黑,求使得黑色格子数字为k的【最终图案】的个数。 思路…...
android studio 解决git用户名和用户邮箱不一致的问题
原因:公司git代码提交,应该用的是公司的账号和邮箱,不要使用私人名称和邮箱;1、查看自己本地的git用户名、邮箱配置1.1、在用户目录下,文件名:.gitconfig1.2、打开后:[user]name zhangjian.***…...
ai辅助开发:让快马平台智能诊断并生成最优的wsl ubuntu环境配置方案
在折腾开发环境配置的路上,相信不少朋友都踩过WSL安装Ubuntu的坑。从选择版本、处理依赖到解决网络问题,整个过程就像开盲盒。最近尝试用AI辅助完成这个任务时,意外发现了一条捷径——通过智能交互就能生成量身定制的环境方案。 传统配置的痛…...
手把手教你理解半导体中的电阻优化:polycide与salicide的实战应用
半导体工艺中的电阻优化艺术:深入解析polycide与salicide技术 在28nm以下先进制程中,金属硅化物技术已成为决定芯片性能的关键因素。当我们翻开任何一款现代处理器的版图,polycide和salicide这两种看似相似的工艺,实际上在晶体管的…...
从物流小哥,转行网络安全,是我这辈子最成功的选择
从月薪4000的物流小哥成功转行到月入上万的网络安全工程师,我是怎么做到的,下面说说我的亲身经历。 我叫阿强,我是26岁转行学网安的。说实在,转行就是奔着挣钱去的。我三流大学毕业,物流专业,学习能力一般…...
黑客技术?没你想象的那么难!—— DNS 劫持篇
黑客技术?没你想象的那么难!——dns劫持篇 什么是DNS劫持? DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后…...
AI智能体(Agent)的底层逻辑
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、核心模块? 二、工作流程 三、关键设计思想 3.1 ReAct 模式 3.2 工具调用(Function Calling) 3.3 记忆管理 3.4 多智能体…...
N_m3u8DL-RE:跨平台流媒体解决方案的全方位技术指南
N_m3u8DL-RE:跨平台流媒体解决方案的全方位技术指南 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE …...
千问3.5-2B图文对话入门:一张图+一句话提问,实现图像理解、颜色判断、主体定位
千问3.5-2B图文对话入门:一张图一句话提问,实现图像理解、颜色判断、主体定位 1. 认识千问3.5-2B视觉语言模型 千问3.5-2B是Qwen系列中的小型视觉语言模型,它能够同时理解图片内容和自然语言问题。想象一下,你给朋友看一张照片&…...
HTTP 基础
文章目录1、认识 HTTP1.1 超文本2、与 HTTP 有关的组件2.1 Web 服务器3、与 HTTP 有关的协议3.1 TCP3.2 DNS3.3 URI / URL3.4 HTTPS4、HTTP 请求响应过程5、HTTP 请求特征6、详解 HTTP 报文6.1 HTTP 请求 方法6.2 HTTP 请求 URL6.2.1 http6.2.2 主机6.2.3 端口6.2.4 路径6.2.5 …...
开源抢票工具成功率提升指南:从配置到实战的全方位优化
开源抢票工具成功率提升指南:从配置到实战的全方位优化 【免费下载链接】damaihelper 支持大麦网,淘票票、缤玩岛等多个平台,演唱会演出抢票脚本 项目地址: https://gitcode.com/gh_mirrors/dam/damaihelper 你是否曾在开票瞬间眼睁睁…...
