ひとりよがりのモバイル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が使えるのは、本当に嬉しい。これでいつも使っているマシンと同じ環境になりました。