Fedora 35 + fcitx5-mozc + emacs
はじめに
下記参考記事をもとに、Fedora 35 に fcitix5-mozc 環境をつくったが、emacsにおいて、mozc.el が mozc-serverと通信できない事象にぶつかったため、解決策を検討した。
原因
Fedora 35 の mozc パッケージと、 fcitx5-mozc それぞれで mozc_server/mozc_toolを別ディレクトリでインストールしていた。
mozc_emacs_helperはmozcのみインストールさて、mozcパッケージの「/usr/libexec/mozc/mozc_server」とは通信できるが、 fcitx5-mozc由来の「/usr/libexec/fcitx5-mozc/mozc_server」とは通信できない。
$ dnf repoquery -l fcitx5-mozc --installed
/usr/lib/.build-id
中略
/usr/libexec/fcitx5-mozc
/usr/libexec/fcitx5-mozc/mozc_server
/usr/libexec/fcitx5-mozc/mozc_tool
/usr/share/doc/fcitx5-mozc
/usr/share/doc/fcitx5-mozc/README.md
/usr/share/doc/fcitx5-mozc/credits_en.html
略
$ dnf repoquery -l mozc
Last metadata expiration check: 2:49:01 ago on Thu 24 Mar 2022 11:05:25 AM JST.
/usr/bin/mozc_emacs_helper
/usr/lib/.build-id
/usr/lib/.build-id/20
中略
/usr/libexec/mozc
/usr/libexec/mozc/documents
/usr/libexec/mozc/documents/credits_en.html
/usr/libexec/mozc/mozc_server
/usr/libexec/mozc/mozc_tool
/usr/share/emacs/site-lisp/mozc
/usr/share/emacs/site-lisp/mozc/mozc.el
略
対処方針
- mozcパッケージはインストールしない。(= mozc_server は fcitx5-mozc のみを利用)
- fcitx-mozc 側で mozc_emacs_helper をビルドさせる
- mozc の site-lisp は emacs から M-x package-install でインストールする (RPM経由で /usr/share/emacs/site-lispにインストールしない)
対処内容
具体的に実施したのは以下のコマンド。rpm 向けの開発コマンドのインストール、fcitx5-mozcのソースコードの入手と展開。あとは rpmbuild のフォルダに適宜ファイルを移す(コマンド省略)。
- sudo dnf install rpmdevtools
- dnf download --source fcitx5-mozc
- rpmdev-extract fcitx5-mozc-2.17.2102.102.1-14.20211205git0ad3cf5.fc35.src.rpm
spec file への変更
スペックファイルに以下の変更を加える
$ cat fcitx5-mozc.spec.diff
--- fcitx5-mozc.spec.orign 2022-03-24 13:45:56.624815976 +0900
+++ fcitx5-mozc.spec 2022-03-24 13:34:42.035351882 +0900
@@ -115,7 +115,7 @@
QTDIR=%{_prefix} \
GYP_DEFINES="document_dir=%{_datadir}/licenses/%{name} use_libzinnia=1 use_libprotobuf=1 zinnia_model_file=%{_datadir}/zinnia/model/tomoe/handwriting-ja.model" \
python3 build_mozc.py gyp --gypdir=%{_bindir} --server_dir=%{server_dir} --target_platform=Linux
-python3 build_mozc.py build -c Release server/server.gyp:mozc_server gui/gui.gyp:mozc_tool unix/fcitx5/fcitx5.gyp:fcitx5-mozc
+python3 build_mozc.py build -c Release server/server.gyp:mozc_server gui/gui.gyp:mozc_tool unix/fcitx5/fcitx5.gyp:fcitx5-mozc unix/emacs/emacs.gyp:mozc_emacs_helper
popd
%install
@@ -123,6 +123,8 @@
export _bldtype=Release
install -D -pm 755 "out_linux/${_bldtype}/mozc_server" "%{buildroot}%{server_dir}/mozc_server"
install -D -pm 755 "out_linux/${_bldtype}/mozc_tool" "%{buildroot}%{server_dir}/mozc_tool"
+# emacs-common-mozc
+install -D -pm 755 "out_linux/Release/mozc_emacs_helper" "%{buildroot}%{_bindir}/mozc_emacs_helper"
# fix install dirs in script, don't use those hardcoded paths:
# ${PREFIX}/share/metainfo -> _metainfodir
sed "s|\${PREFIX}/share/metainfo|%{buildroot}%{_metainfodir}|g" -i ../scripts/install_fcitx5
@@ -145,6 +147,7 @@
%{_datadir}/icons/hicolor/*/apps/*
%{_libdir}/fcitx5/fcitx5-mozc.so
%{_metainfodir}/org.fcitx.Fcitx5.Addon.Mozc.metainfo.xml
+%{_bindir}/mozc_emacs_helper
%changelog
* Sun Dec 05 2021 Qiyu Yan <yanqiyu@fedoraproject.org> 2.17.2102.102.1-14
結果
終始したspecファイルを利用して、コンパイルを実施する。
生成したRPMファイルをインストールし、emacs に描き設定を行った
(require 'mozc) ; or (load-file "/path/to/mozc.el")
(setq default-input-method "japanese-mozc")
まとめ
fcitx5-mozc 側で /usr/bin/mozc_emacs_helper をコンパイルし、インストールを行った。
今後バージョンアップで書き換えられないようにdnfで更新されないよう、dnf.confに「excludepkgs=fcitx5-mozc 」を設定すべきであろう。
参考URL
Author And Source
この問題について(Fedora 35 + fcitx5-mozc + emacs), 我々は、より多くの情報をここで見つけました https://qiita.com/hshimomu/items/8edba0d00ef3f6821dd2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .