分类
Linux

在64位Manjaro ARM上使用fcitx-rime

博主在今年6月份的时候出于支持ARM无聊购买了一台Pinebook Pro,但一拿到手就发现屏幕上出现了9个坏点败了兴致。

直到昨天屏幕面板的替换件到货,博主才正式开始Pinebook Pro的体(Cai)验(Keng)之旅。

结果发现安装好的fcitx-rime无法使用。。。

将中州韻添加到当前输入法列表后却发现死活无法调出,且一旦切换到中州韻,该输入法的选项就会从列表中消失。

在终端中启动fcitx的时候发现系统无法加载fcitx-rime.so,并提示

/usr/lib/libtcmalloc.so.4: 无法在静态 TLS 块中分配内存

英文环境下提示

/usr/lib/libtcmalloc.so.4: cannot allocate memory in static TLS block

貌似是tcmalloc在64位arm(aarch64)架构上有坑,导致了fcitx-rime.so无法加载。

解决方案就很简单了,找出rime中用了tcmalloc的库,并重新编译一份使用malloc的版本。在Archlinux的官网上查询到,fcitx-rime使用了rime的librime库,然后librime使用了leveldb,leveldb又依赖了gperftools。而gperftools就可以说是tcmalloc在archlinux中的本体了。下载leveldb的PKGBUILD文件,将gperftools从依赖中删除,卸载系统中的gperftools后makepkg -s -i重新构建并安装leveldb。

可是事情还没完。。。Rime是跑起来了,但朙月拼音·简化字打出来却全是繁体。。。

用终端打开fcitx继续看输出信息,系统提示

opencc config not found: /usr/share/rime-data/opencc/t2s.json

原来朙月拼音·简化字的码表依旧是繁体字,只是在输出的时候通过opencc简转繁。但按照字面意义上理解,应该是/usr/share/rime-data/opencc/t2s.json这个文件不存在,可是这个文件确确实实又在那里。

与opencc自己在/usr/share/opencc目录下的t2s.json配置文件对比,发现我从archlinux.org上拷贝PKGBUILD自己编译的fcitx-rime中所带的配置文件有错误。opencc自带的t2s.json配置文件file项中所出现的文件都是以.ocd2结尾的,而rime所带的opencc配置文件是以.ocd结尾的。将/usr/share/rime-data/opencc目录里的配置文件用/usr/share/opencc里的配置文件替换掉,重新加载rime配置或重新启动fcitx后解决问题。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据