好像不少同学在 debian/ubuntu 上使用 emacs-rime 都遇到了麻烦,大部分是无法编译成功 librime-emacs.so 的情况,原因都是因为 librime 版本太低,于是找了台 debian10 的机器手工编译了一下 librime ,给遇到问题的小伙伴做个参考,不过不知道是否适合所有的 debian/ubuntu 版本。文章在这里:
最近比较火爆的 emacs-rime 输入法,终于可以在 emacs 里有和系统 rime 输入法一样的输入体验了。
看起来好像很不错的样子。我觉得可以弄到 README 当中。
确实大部分 issue 都是在 debian/ubuntu 下面编译 librime 遇到问题。
我要按照这个改下 README
sudo apt-get build-dep librime
这样安装依赖不知道能不能用于 最新版的 librime 编译?
这样的话,还需要单独安装libgtest-dev
按照这个我加个了 github action,librime 的构建没有成功
https://github.com/DogLooksGood/emacs-rime/runs/557095908?check_suite_focus=true
CMake Error at /usr/local/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
Could NOT find GTest (missing: GTEST_LIBRARY GTEST_MAIN_LIBRARY)
Call Stack (most recent call first):
/usr/local/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
/usr/local/share/cmake-3.16/Modules/FindGTest.cmake:205 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:97 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/runner/work/emacs-rime/emacs-rime/librime/build/CMakeFiles/CMakeOutput.log".
See also "/home/runner/work/emacs-rime/emacs-rime/librime/build/CMakeFiles/CMakeError.log".
Makefile:44: recipe for target 'release' failed
make: *** [release] Error 1
##[error]Process completed with exit code 2.
libgtest-dev
这个东西不是 GTest 吗?好奇怪
cd /usr/src/gtest
make CMakeLists.txt
make
cp *.a /usr/lib
============ gtest 需要一些额外处理后才能使用
好的。我试试,还有个问题就是 ubuntu 上面怎么装有动态模块支持的 emacs? 还有 emacs-module.h 的位置?
我在他们librime的 docker 文件中发现的
emacs-module.h 最好直接参考libertine 一样,直接把头文件复制到src目录, 因为这个头文件不依赖emacs源码。
emacs 我是直接源码编译的:slight_smile:
git clone https://git.savannah.gnu.org/git/emacs.git /opt/emacs
cd /opt/emacs &&
./autogen.sh &&
./configure --with-modules --with-xwidgets &&
make -j 8 &&
make install
是的,我觉得下载单个文件比较好,emacs的源码太大的。
我研究到一半。主要是ubuntu 16 yaml-cpp的版本也有问题,还得自己build。不过还是有一些其他问题。
我感觉可以release个基于ubuntu 18的so build。应该能够在大多debian环境下work
(
sudo apt install cmake libboost-all-dev libgtest-dev libgoogle-glog-dev libleveldb-dev libmarisa-dev libopencc-dev
cd /usr/src/gtest
sudo cmake CmakeLists.txt && sudo make
sudo cp *.a /usr/lib
cd /tmp
wget https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.6.0.tar.gz -O yaml-cpp.tar.gz
tar xvf yaml-cpp.tar.gz
cd yaml-cpp-*
mkdir build && cd build
cmake -DYAML_BUILD_SHARED_LIBS=ON .. && sudo make install
rm -rf yaml-cpp*
cd /tmp
wget https://github.com/rime/librime/archive/1.5.3.tar.gz -O rime-1.5.3.tar.gz
tar xvf rime-1.5.3.tar.gz
cd librime*
echo 'include_directories("/usr/local/include")
$(cat CMakeLists.txt)'
make && sudo make install
rm -rf librime*
)
sudo apt install fcitx fcitx-rime librime-dev
ubuntu 有办法用 apt 直接装 emacs 27 吗?
我发现源码里面的 emacs-module.h 是通过 emacs-module.h.in 生成的。
可以验证下想法, 压缩包里是ubuntu下生成的librime.so 和librime-emacs.so
链接: 百度网盘-链接不存在 提取码: g1zb 复制这段内容后打开百度网盘手机App,操作更方便哦
负责完成后需要执行下ld-config
以下是我doom下的配置
config.el
实在嫌累的朋友可以参考下我用来定制emacs的docker文件吧
好的,我尝试下。主要是ubuntu 16的问题太多了,librime的Dockerfile是基于18的,libyaml-cpp之类的都没有什么问题,很好build。
试了一下,貌似不行,会报module could not be opned:libboost_filesystem.so.1.65.1的错误。确实很多依赖项还是有问题。唉,主要是ubuntu 16太老了。
pyim可以扩展实现以词定字功能,fcitx-rime查了半天都没有找到解决办法,emacs-rime可以实现么?
以词定字是啥意思?
emacs-rime 不会去实现 rime 中没有的功能。虽然利用其中的一些 api 很容易自己写出来。
在编译 librime 的时候用这个, 可以给 rime 加插件, 只要你会 lua