🏗️

DockerでビルドしたMozcをUbuntu 22.04 LTSにインストールする

2023/08/19に公開

この記事はUbuntu日和【第33回】フォントと日本語入力の、ホントの話(Wayland編)の副産物です。こっちのPVを上げるためのものなので必ず読んでくださいね(直球)。

動作確認バージョンは、2.29.5374.102です。

これからすることはパッケージ管理から外れることなので、それなりにリスクがあります。それを忘れないようにして、Mozcのライセンス(無保証とか)に従って行っていきましょう。

uim版/Fcitx版/Fcitx5版Mozcを使用している場合は諦めてください。MozcそのものはIBusのみにしか対応していません。パッケージではそれぞれパッチを当てて対応しているのですねー。

Dockerのインストール

Ubuntuのリポジトリ(apt/snap共に)にもDockerのパッケージはありますが、Dockerのオフィシャルパッケージを使う必要があります。インストール方法はこちらにありますが、一応コマンドラインでは以下のとおりです。

$ sudo apt install curl
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
$ echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update 
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
$ sudo adduser ${USER} docker

追加したグループを有効にするためにも、一度再起動するといいでしょう。

Mozcのビルド

続いてMozcのビルドを行います。こちらもわかりやすいドキュメントがありますけど、コマンドラインでは以下のとおりです。

$ curl -O https://raw.githubusercontent.com/google/mozc/master/docker/ubuntu22.04/Dockerfile

Dockerfileを編集し、確実にタグ2.29.5374.102をcloneするようにします。77行目の

RUN git clone https://github.com/google/mozc.git -b master --single-branch --recursive

RUN git clone https://github.com/google/mozc.git -b 2.29.5374.102 --single-branch --recursive

にしてください。-bオプションはタグでも使えるのか……(知らなかった)。

続けて次のコマンドを実行してください。

$ docker build --rm --tag mozc_ubuntu22.04 .
$ docker create --interactive --tty --name mozc_build mozc_ubuntu22.04

うちだとdocker buildに400秒くらいかかりました。

コンテナができたので、Mozcをビルドします。

$ docker start mozc_build
$ docker exec mozc_build bazel build package --config oss_linux -c opt
$ docker cp mozc_build:/home/mozc_builder/work/mozc/src/bazel-bin/unix/mozc.zip .

うちの環境だとビルドに377秒くらいかかったようです。そこそこ速いですね(Ryzen 7 8700Gで4コア割当)。

ビルドしたパッケージはmozc.zipにまとめられるので、これを展開するのがすなわちインストールです。

インストールする

ビルドしたMozcにはmozc-utils-guiとemacs-mozc-binパッケージ相当のファイルが入っているため、一応インストールしておきます。

$ sudo apt install mozc-utils-gui emacs-mozc-bin

ただし現状のmozc-utils-guiはQt5、前述のとおり2.29.5200以降はQt6で、かなり高い確率で依存パッケージ(Qt6ですな)が足りません。インストールしておきましょう。

$ sudo apt install libqt6widgets6 qt6-wayland qt6-qpa-plugins

Qt6何もわからんマンなのでqt6-qpa-pluginsが曲者でした。

ようやくMozcをインストールします。

$ ibus exit
$ sudo unzip mozc.zip -d /tmp/
$ sudo cp -r /tmp/usr/ /

もう一度再起動します。

動作確認

最も簡単な動作確認方法は、「ばーじょん」を変換してみることでしょう。

「ばーじょん」で確認する

このように「Mozc-2.29.5374.102+24.11.oss」になっていればうまく動いています。ちなみにこれはWaylandセッションです。

Waylandセッションでもmozc_rendererを使用する

MozcはデフォルトでX11セッションだとmozc_renderer、WaylandセッションだとIBusの候補ウィンドウを使用します。後者の例は↑のスクリーンショットです。

Waylandセッションでmozc_rendererを使用する方法はドキュメントに書かれているとおりで、~/.config/mozc/ibus_config.textproto

mozc_renderer {
  enabled : True
  compatible_wayland_desktop_names : ["GNOME"]
}

を追記します(Ubuntuの場合)。

一回ログアウトして再ログインすると、mozc_rendererが使用できるようになります。

mozc_renderer使用

たいていの場合は問題ないはずですが、何らかの理由でmozc_rendererに切り替わらない場合は、適当なQtアプリケーション(例えばfeatherpad)を一度起動してMozcをオンにしてやると切り替わるようになりました。手元で起きていたものの再現しないので、参考までに。

では、自己責任でGood Luck!

Discussion