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 
```diff_actionscript
--- 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")
```
![Screenshot from 2022-03-24 14-00-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385067/04b0fde0-7250-3137-02fe-5f2fc4a76c52.png)


# まとめ
fcitx5-mozc 側で /usr/bin/mozc_emacs_helper をコンパイルし、インストールを行った。
今後バージョンアップで書き換えられないようにdnfで更新されないよう、dnf.confに「excludepkgs=fcitx5-mozc 」を設定すべきであろう。

# 参考URL
[Fedora 35リリース！ 〜最新Gnome 41採用・・fcitx5-mozcの日本語入力環境を構築する！](https://www.linux-setting.tokyo/2021/12/fedora-35-gnome-41fcitx5-mozc.html)