ひとりよがりのモバイルPC ( その9 SC-03Gでも Mozc が使いたい )
rootで動く Mozc UT2 をソースからコンパイルしてみよう。
Mozcとは、Wikipediaによれば、
Google 日本語入力のオープンソース版である。これは2010年5月11日にGoogle日本語入力をGoogle Chrome OSに移植するために必要な部分をオープンソースしたものである。
とのこと。
現在のLinuxでは、Mozcは最もポピュラーな日本語変換システムであり、ほとんどのディストリビューションでは、標準ツールになっています。
さて、ひとりよがりのモバイルPC ( その4 AndroidでLinux環境を動かす3つの手法 )の最後で少し触れましたが、SC-03Gは特殊なセキュリティシステムがあるため、LinuxDeployの環境構築を “rootユーザー” で行わざるえませんでした。
ところが、いくつかのツールはセキュリティの側面から、rootによる起動を抑制しています。実は、Mozcがまさしくそれであり、SC-03Gでは通常の方法(apt)でMozcをインストールしても、使用することが出来ません。実行すると、下記のように “defunct” という状態になってしまいます。
そういうわけで、ひとりよがりのモバイルPC(その7 Linux DeployによるDebianのインストール 環境整備編)では、“Anthy"をインストールせざるえなかったのですが、Anthyはもはや過去のツールであり、Mozcと比べると変換効率、操作性、全てにおいて見劣りします。
やはり、Mozcを使いたい!!
そう、今回の目的は「SC-03GでMozcが使えるようする」ということなのです。
導入施策について
今回は、Mozcの辞書をさらに強化した「Mozc UT2」というツールを使ってみようと思います。
以下、
- (1) 「Mozc UT2」ソースパッケージの入手
- (2) root起動を抑制している部分の修正
- (3) コンパイルとインストール
という手順を踏みます。
といっても、上記はわたしの能力を越える部分なので、ほとんどすべての情報をインターネット上から入手させていただきました。
特に「コンパイルとインストール方法」については、こちらの記事のお世話になりました。ありがとうございます。
(1) 「Mozc UT2」ソースパッケージの入手
ここから、“mozc-2.23.2815.102+dfsg~ut2-20171008d+20200423focal.tar.xz” をダウンロードし、適当なディレクトリに展開します、
(2) root起動を抑制している部分の修正
展開したソースツリー内の “mozc-2.23.2815.102+dfsg~ut2-20171008d+20200423focal/mut/src/base/run_level.cc” を変更します。270行あたりから、rootでの実行をチェックしているところがあるので、ここをコメントアウトして、“NORMAL” を返すようにしてしまいます。
#else // OS_WIN
/*
if (type == SERVER || type == RENDERER) {
if (::geteuid() == 0) {
// This process is started by root, or the executable is setuid to root.
// TODO(yusukes): It would be better to add 'SAFE' run-level which
// prohibits all mutable operations to local resources and return the
// level after calling chroot("/somewhere/safe"), setgid("nogroup"),
// and setuid("nobody") here. This is because many novice Linux users
// tend to login to their desktop as root.
return RunLevel::DENY;
}
if (::getuid() == 0) {
// The executable is setuided to non-root and is started by root user?
// This is unexpected. Returns DENY.
return RunLevel::DENY;
}
return RunLevel::NORMAL;
}
// type is 'CLIENT'
if (::geteuid() == 0 || ::getuid() == 0) {
// When mozc.so is loaded into a privileged process, deny clients to use
// dictionary_tool and config_dialog.
return RunLevel::DENY;
}
*/
return RunLevel::NORMAL;
(3) コンパイルとインストール
ここからソースをコンパイルしていくのですが、必要となるツール、ライブラリを事前にインストールしないといけません。
まずは、build-essential(C,C++などの開発ツール一式)を入れておく、これは当然ですね。
# apt -y install build-essential
続けて、Mozc UT2のコンパイルに必要なツールをインストールします。
# apt install -y devscripts debhelper libibus-1.0-dev pkg-config libxcb-xfixes0-dev libgtk2.0-dev python-dev gyp protobuf-compiler libprotobuf-dev qtbase5-dev libqwt-qt5-dev libgwengui-qt5-dev libuim-dev libzinnia-dev fcitx-libs-dev gettext desktop-file-utils ninja-build
スクリプトの変更
実行スクリプトは、“mozc-2.23.2815.102+dfsg~ut2-20171008d+20200423focal/build_mozc_plus_utdict” ですが、このファイルを開いてみると、処理終了後、"./mut” を削除しています。一回で問題なく完了できればそれで良いのですが、ミスった場合、先に実施した変更内容を含め、ソース全体が削除されてしまいます。コメントアウトしておくのが無難でしょう。
#!/bin/sh
cd ./mut/
debuild -b -uc -us -d
cd -
#rm -rf ./mut/ #<-- comment out this line.
echo '終了\n'
コンパイルの実行
上記のスクリプトを実行して、Mozc UT2をコンパイルします。
# cd mozc-2.23.2815.102+dfsg~ut2-20171008d+20200423focal
# ./build_mozc_plus_utdict
コンパイルには、SC-03Gで40分程かかります。終了すると、同じディレクトリ内に、下記の “.deb"ファイルが作成されます
emacs-mozc-bin-dbgsym_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
emacs-mozc-bin_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
emacs-mozc_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
fcitx-mozc-dbgsym_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
fcitx-mozc_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
ibus-mozc-dbgsym_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
ibus-mozc_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
mozc-data_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_all.deb
mozc-server-dbgsym_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
mozc-server_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
mozc-utils-gui-dbgsym_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
mozc-utils-gui_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
uim-mozc-dbgsym_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
uim-mozc_2.23.2815.102+dfsg-8ubuntu99+focal1.1~ut2.0_armhf.deb
インストール
“.deb"ファイルを、インストールします。“ibus” と” uim” は不要なので、それ以外を導入します。「Emacsなんていらない」なんていう不逞の輩は、これも外して結構です(笑)。
# dpkg -i ./mozc-data_*.deb ./mozc-server_*.deb ./mozc-utils-gui_*.deb ./fcitx-mozc_*.deb ./emacs-mozc*.deb
以上で、(3)の「コンパイルとインストール」は完了です。
終了後、マシンを再起動します。
(4) 設定
1. fcitx
メニューから、「設定」→「Fcitx設定」
"mozc"が追加されていますね。ここで、"-"(上図下部)を押して"Anthy"を削除します。
元から消してしまっても良いでしょう。
# apt remove fcitx-anthy
Terminalを開いてみます。Alt+~(半/全)を押すと、[Mozc]のガイダンスが出てくるので、適当に入力してみましょう。
候補がでてきました。
2. emacs
.emacsに、下記を追加します。最近の設定は、 ~/.emacs.d/に、init.elなんやらと小賢しげに書くらしいが、そんな設定が生まれる前からEmacsを使っているわたしは、".emacs"一本。文句あるまい(笑)。
(require 'mozc)
(setq default-input-method "japanese-mozc")
Emacsを起動し、Ctrl+\を押して入力します。
下部に、[Mozc]と出ていますね。
EmacsでMozcが使えるのは、本当に嬉しい。これでいつも使っているマシンと同じ環境になりました。