あれこれ備忘録@はてなブログ

勉強したことやニュースや出来事を備忘録として書いていきます

このブログには広告が含まれます

Puppy Linux用のMozcのビルドに挑戦してみた。結果は失敗

Puppy Linuxの日本語入力はAnthyなので変換効率がいまいちである。

先日は辞書を強化してみた。

今回はPuppy Linux用のMozcをビルドしてみようと思う。

UbuntuでMozcの新しいバージョンをビルドするには

上の記事を参考にした。

bazelというものが必要になるようだ。

バージョンは2026/02/21現在8.5.1が出ているようだ。

バージョン9.0.0ではMozcはビルドできないらしいのでこちらを使う。

https://github.com/bazelbuild/bazel/releases/download/8.5.1/bazel-8.5.1-installer-linux-x86_64.sh

上のスクリプトをダウンロードし、以下を実行する

bash bazel-7.3.2-installer-linux-x86_64.sh --user
source ~/.bazel/bin/bazel-complete.bash
export PATH="$PATH:$HOME/bin"
bazel --version

これで

bazel 8.5.1

と出れば、インストール成功である。

ソースパッケージのダウンロードを有効にしておきます。 Debianの場合は、/etc/apt/sources.list.d/debian.sourcesのTypesにdeb-srcを加えて、apt-get updateしておきます。 Ubuntuの場合は、/etc/apt/sources.listのdeb-srcのコメントアウトを取り除いて、apt-get updateしておけばOKです。 Ubuntu-24.04(noble)の場合は、/etc/apt/sources.list.d/ubuntu.sourcesのTypesにdeb-srcを加えて、apt-get updateしておきます。

と書いてある。

Linux Mintではスタートメニューの「システム管理」の「ソフトウェアソース」を選択して、ウィンドウが開いたら「任意のソース」の「ソースコードリポジトリ」をオンにすると同様の効果がある。

すると自動的にapt updateされる。

以下のコマンドを実行する。

sudo apt-get build-dep mozc
sudo apt-get install qt6ct qt6-base-dev libfcitx5-qt6-dev

さらに次のコマンドを実行し、最新のソースをダウンロードする。

mkdir -p build
cd build
git clone --recursive --filter=tree:0 https://github.com/google/mozc.git mozc
git clone --filter=tree:0 -b main https://github.com/phoepsilonix/mozc-deb.git mozc-deb

ビルドする前にソースの一部を書き換える。

ひとりよがりのモバイルPC ( その9 SC-03Gでも Mozc が使いたい ) - TORIO's blog

上のリンクの記事を参考に、build/mozc/src/base/run_level.ccをテキストエディタで開き、「root」というワードで検索。

以下の部分を見つけたらコメントアウトする。つまり/* */で囲む。

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;
  }

ビルドする。

cd mozc
cp -a ../mozc-deb/debian ./
ls debian/patches/*.patch|xargs -n1 patch -p1 -i 
fakeroot debian/rules binary

ビルドが完了するとbuildディレクトリの下に複数のdebファイルができる。

fcitx-mozcというディレクトリを作り、各種debファイルを解凍する。

dpkg-deb -x mozc-data_3.33.6089.2+dfsg-2.2build1.1_all.deb ./fcitx-mozc
dpkg-deb -x mozc-server_3.33.6089.2+dfsg-2.2build1.1_amd64.deb ./fcitx-mozc
dpkg-deb -x mozc-server-dbgsym_3.33.6089.2+dfsg-2.2build1.1_amd64.ddeb ./fcitx-mozc
dpkg-deb -x mozc-utils-gui_3.33.6089.2+dfsg-2.2build1.1_amd64.deb ./fcitx-mozc
dpkg-deb -x mozc-utils-gui-dbgsym_3.33.6089.2+dfsg-2.2build1.1_amd64.ddeb ./fcitx-mozc
dpkg-deb -x fcitx-mozc-data_3.33.6089.2+dfsg-2.2build1.1_all.deb ./fcitx-mozc
dpkg-deb -x fcitx-mozc-dbgsym_3.33.6089.2+dfsg-2.2build1.1_amd64.ddeb ./fcitx-mozc
dpkg-deb -x fcitx-mozc_3.33.6089.2+dfsg-2.2build1.1_amd64.deb ./fcitx-mozc

できたら、これをsfs(SquashFS)ファイルにする。

mksquashfs fcitx-mozc/ fcitx-mozc.sfs

このsfsファイルをPuppy Linuxに読み込ませるとMozcが有効になるはずである。

しかし、結果としては失敗した。

sfsファイルを読み込ませても、入力メソッドにMozcが現れない。

debファイルを直接インストールしようと試みたが、libqt6gui6t64というライブラリが足りないという。

どうやらDebianでは使われていないようだ。

もしかするとUbuntuベースのPuppyならできるかもしれないが、現在、日本語版や日本語化パッチが提供されているもののうちUbuntuベースはFossaPupしかない。

これも古いものなのでこれから使うには適していない。

今回は失敗ということであきらめるしかないようだ。

2026/02/22 追記

Puppy Linuxで使えるsfsファイルを使うためにdebファイルをインストールせずにディレクトリの中にdpkg-debを使って解凍したのだが、これでは良くないかもしれない。

chrootを使って/(ルートディレクトリ)を変えて、debファイルをインストールする必要があるかもしれない。

Puppyで使えるsfsファイルを作る方法が書かれた記事がすでに古いもので、make && make installする方法しか書かれていない。

Mozcの場合、ビルドするとdebファイル(パッケージファイル)が作られてしまうため、この方法が使えない。

今回はいずれにしろ、ライブラリが足りないエラーで使えないので意味はないのだが、今後のために方法を知りたい。

2026/02/23 追記

Puppy Linux日本語フォーラムのこんなスレッドがあった。

mozc ut2組み込みキット(Fossapup64 9.5 日本語化版向け)β版 - Puppy Linux 日本語 フォーラム

#8つのdebパッケージを./wokに展開
ls *.deb | xargs -i -t dpkg-deb -x {} ./wok
#mozcの設定がメニューに出るようにsetup-mozc.desktopファイルの書き換え
sed -i -e 's/^Categories=Settings/Categories=X-Desktop/' ./wok/usr/share/applications/setup-mozc.desktop
#sfsの作成
mksquashfs ./wok ./mozc-fossapup~ut2.0a.sfs -comp xz -b 1048576

これを見るとdebファイルをインストールするのではなくて、dpkg-debで解凍するのは正しいようだ。

そして、FossaPup用だということを考えれば、やはりUbuntuベースのPuppyなら成功する可能性は高いということだろう。

また、折を見て挑戦したい。

2026/03/04 追記

arekorebibouroku.hateblo.jp

技術を持っている人はちゃんとPuppy Linux用のMozcを作れるようだ。