Chap-30-2. AlmaLinux で mozc を使う

 AlmaLinux 8.x では Fedora のリポを有効化して ibus-mozc がインストール出来ました。ALmaLinux 9.0 になってそれが出来なくなりました。なので、自前で適当に工夫してやってみます。



Sec-1.結果としてどうだったのか
Sec-2.まず Ubuntu でちょっとやってみる
Sec-3.Flatpak 版の fcitx5-mozc を Almalinux で使ってみる
Sec-4.Git から ibus-mozc を Almalinux で構築してみる
Sec-5.やってみての感想

2022-11 補足
 Almalinux-9.1 以降でも依然として ibus-mozc が epel-release を有効にしてもインストール出来ません。
どうやら Almalinux については ibus-mozc のパッケージを切り捨ててるみたいです。





Sec-1.結果としてどうだったのか

 やってみた結果を最初に書いておきます。

こんな感じです。




Sec-2.まず Ubuntu でちょっとやってみる

 flatpak 版には制約があります。まず Ubuntu に flatpak 版 fcitx5-mozc を入れて様子を見ます。(このセクションは制約の様子を見るためにやってみるだけです。実際にはやらなくても良いです、勿論)
やり方は、まず英語版で Ubuntu をインストール。UTF-8 対応なので普通に日本語表示も入力も出来ます。
これに # flatpak install fcitx5 とすると選択肢が出ます。多分 6 と 7 を入れればオケです。(fcitx5 と fcitx5-mozc)
後は gnome-tweaks のスタートアップアプリケーションに fcitx5 を入れておきます。.bash_profile は ArcoLinux のチャプタにあるようにします。

export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XMODIFIERS=@im=fcitx5

export DefaultIMModule=fcitx5 の記述は不要です。

次に、例によって input-method の窓をトップのところに開けます。gnome-software で extension(拡張) を検索すると flatpak 版の extension (拡張)が出てきますのでこれをインストール。青いヤツ。


screen-1

これを起動するとプラグインを探せるので input method と入力して出てきたプラグインをインストール。下の絵で一番上のヤツです。自動的にinput method の窓を開ける設定になります。次回リブート時に窓が開きます。


screen-2

 立ち上がると右上に窓があいていてキーボードみたいな絵があります。右クリックして一番下の設定を押すと例の fcitx5 設定が出ます。もしもキーボードが英語になっていたら日本語に直します。


screen-5



screen-3

 これだけ準備して再度リブートすると日本語入力が問題なく出来るように見えますが、実は gtk2 にしか対応していない(と思われるもの)には入力出来ません、sylpheed にはどうやっても入力できません。

 Ubuntu の場合は、実はここでひと工夫出来ます。パッケージの中に fcitx5-frontend-gtk2 ってのがあります。これをインストールすると sypheed にも日本語入力出来る様になります。さすがに Ubuntu は違います、良く出来てる。
つまり、flatpak 版の fcitx5-mozc が gtk2 に対応していないので、その分のフロントエンドを flatpak からではなく Ubuntu のパッケージからまかなうことができちゃいます。
これは Alma では無理と思われます。






Sec-3.Flatpak 版の fcitx5-mozc を Almalinux で使ってみる

 やり方は上の Ubuntu (英語版)に入れたのと同じに出来ます。説明省略。

 で、やった結果ですが gtk2 対応が出来ませんでした。Ubuntu とは違って、そこだけがうまく行きません。AlmaLinux 版の firefox もどうやら gtk2 対応のようで、日本語入力出来ませんでした。
それ以外は快調に日本語入力出来ました。日本語名のディレクトリを作ってみました。うまく日本語入力できました。


screen-x

ブラウザはその後 flatpak 版にすることで、firefox、chromium、google-chrome の全てで日本語入力出来ました。しかし sylpheed はどうやってもダメでした。もしもこの fcitx5-mozc を使うならメーラは evolution とか別のに代える必要があります。flatpak 版の evolution では日本語入力出来ました。AlmaLinux の evolution は試していません。

なお、git を利用して gtk2 対応のフロントエンド相当(fcitx5-gtk)を作って入れてみましたが Ubuntu のようには行きませんでした。 うまく行かなかったのでやり方は省略します。





Sec-4.Git から ibus-mozc を Almalinux で構築してみる

2023-03 頃に試したところ、mozc のコンパイルができなくなっています。ソースコードの公開が停止されたようです。
このため、以下のとおりにしても mozc のコンパイルは無理です。



 コンパイルにチャレンジです。
まず準備として epel-release を有効化します。(Chap-30 参照)
また、/etc/yum.repos.d/ の中のリポを全て enabled=1 にして有効化します。mozc 関連のコンパイルはいろんなパッケージが必要です。いちいち該当リポを探るのは大変なので、全部有効化しておきます。
bazel が必要ですが Alma のリポに無いようなので flatpak から入れます。flatpak はパスの通っていないところにインストールするので、ファイル場所を探りパスの通っているところに適当にシンボリックリンク貼っておきます
作業前に入れておくパッケージは以下のものです。

libtracecmd libtracecmd-devel extra-cmake-modules xcb-util*
dbus-devel libevent-devel libuuid-devel fmt fmt-devel libxkbfile-devel expat-devel libxkbcommon-x11-devel libxkbcommon-devel
iso-codes-devel xkeyboard-config-devel json-c-devel wayland-devel wayland-protocols-devel enchant2-devel
gobject-introspection-devel python3-pkgconfig python3-colcon-pkg-config gtk2-devel gtk3-devel gtk4-devel
qt5-devel
ibus-devel

xcb-util* の後ろはアスタリスク付いてます。

パッケージインストール以後の作業はシンプルです。適当な場所、例えばホームディレクトリで以下のとおり。


$ git clone https://github.com/google/mozc.git
$ cd mozc
$ git submodule update --init --recursive
$ cd src
$ bazel build -c opt --copt=-fPIC  --config oss_linux  unix/ibus:ibus_mozc server:mozc_server gui/tool:mozc_tool renderer:mozc_renderer

以上です。シンプルです。
1400くらいのファイルをコンパイルします。13分とか14分くらいかかりました。Athlon 3000G はそんなに早くないです。所詮 4 スレッドだし、笑。

インストールについては幸いにネット上にインストールスクリプトがアップされていましたので、それを利用しました。
URL は以下のとおりです。

https://gist.github.com/hatashiro/1ebbd5ed6607d4e191395bba682fdf59

著者さんに感謝です。
スクリプトは基本的に以下のとおり。


#!/usr/bin/env bash

LIB_MOZC=/usr/lib/mozc
LIB_IBUS_MOZC=/usr/lib/ibus-mozc
SHARE_IBUS_COMPONENT=/usr/share/ibus/component
SHARE_IBUS_MOZC=/usr/share/ibus-mozc
BIN=/usr/bin

# Create directories.
mkdir -p $LIB_MOZC
mkdir -p $LIB_IBUS_MOZC
mkdir -p $SHARE_IBUS_MOZC

# Copy binaries
cp -f bazel-bin/gui/tool/mozc_tool $LIB_MOZC
cp -f bazel-bin/renderer/mozc_renderer $LIB_MOZC
cp -f bazel-bin/server/mozc_server $LIB_MOZC
cp -f bazel-bin/unix/ibus/ibus_mozc $LIB_IBUS_MOZC/ibus-engine-mozc
cp -f bazel-bin/unix/emacs/mozc_emacs_helper $BIN
cp -f bazel-bin/unix/ibus/mozc.xml $SHARE_IBUS_COMPONENT
unzip -o bazel-bin/unix/icons.zip -d $SHARE_IBUS_MOZC
##

スクリプト中で mozc_emacs_helper の記述がありますが、そこはうまくコンパイル出来なかったので無視しました。汗。関係スクリプトは出来たけど、binary が出来ませんでした。

さて、動作。
ibus なので gnome-control-center (設定)からいつものように ibus-mozc を選んでおいてから、リブート。
それで確かに ibus-mozc が動いたマークがトップバーに出ました。が、ここでひと工夫必要、笑。
そのままでは ibus-mozc が反応しません。一度、トップバーのマークのところを日本語とmozcの間で行ったり来たりクリックした後、キーボード配列を画面に出します。すると、 ibus-mozc が無事に動き出します。
キーボード・ショートカット変更も自由に出来ます。それは Chap-27. 参照。
幸い sylpheed を含めて全てのソフトウェアに日本語入力出来ました。ヤレヤレ・・笑。
この ibus-mozc は上記 flatpak 版の fcitx5-mozc よりも問題なく日本語入力出来ます。ただし、最初に立ち上げた時にひと工夫必要、笑。
最初のひと工夫必要なのは、例えば「firefox を起動してすぐ落とす」ってのでもオケです。それで無事に ibus-mozc が動き出します。


 このひと工夫しないと ibus-mozc が動かない問題は、AUR から Arch 系に ibus-mozc を入れたときと全く同じです。
あっちも基本的に git を使って ibus-mozc を構築するので、同じソースを利用、同じバグがあるってことですね。
ただし、このバグは mozc 側のバグなのか gnome 側のバグなのかわからないです。もしかしたら、 gnome 側の問題かもしれません。
 実はコンパイルに必要なパッケージは、少し余分に入れている可能性があります。作業として fcitx5-mozc を構築した時に入れたパッケージです。そっちは、コンパイルは無事に終了したものの設定ファイルが用意できず動かすことは出来ませんでした。しかし入れたパッケージの名前はこの Section で役に立ちました。


補足:2022-10
 他のディストリのためにコンパイルした ibus_mozc のバイナリーが偶然 Almalinux で動きました。Chap-27. Sec-7. を見てください。そっちらにパッケージをアップしておきました。






Sec-5.やってみての感想(というより、結論?)

mozc のソース公開が停止していてコンパイルが出来なくなっているので Chap-27. にアップしてある ibus-mozc を使うか、flatpak 版の fcitx5-mozc を使うか mozc にこだわるならどちらかです。