Debian 12 (x86)にATOK for Linux (atokx2)をインストールする


大昔にジャストシステムから発売されたATOK for Linux (atokx2等とも呼ばれている)をDebian 12にインストールします。

この手順でインストールしたATOKは、少なくとも環境設定が開けないという重大な問題がある。 解決策が見つかり次第、追記する。

トライアンドエラーを繰り返しまくった為、 もしかしたら必要の無い手順が入っているかもしれない。

また、DebianのIIIMFをインストールすれば改善するかもしれないが、 今回は付属のHTTとXIMで動かす。

環境及び検証内容

下記の環境をセットアップしています。 基本的にはDebianのインストーラで最小構成 + System Utilityをインストールした後、 xinitopenboxをインストールした形です。

  • Debian 12.9 i386
  • openbox 3.6.1-10
  • xinit 1.4.0-1
  • 日本語設定
    • LANG=ja_JP.UTF-8
    • XKBMODEL=pc105
    • XKBLAYOUT=jp
    • fonts-noto-cjk

下記のソフトウェアにて日本語入力を検証しました。

  • vim-gtk3 2:9.0.1378-2+deb12u2(成功)
  • xterm 379-1(成功)

既知の問題

現状、下記の問題が起きており、解決方法は不明です。

  • 環境設定等の一部ウィンドウが開かない
    • 開こうとするとXごとフリーズする
    • パレットや変換候補ウィンドウ、辞書ツール等は出る
    • 文字パレットは問題無く出る
    • BasicAux, DicUTAux, PropertyAuxが動かないでよさそう
  • (アップデート後) 上記ウィンドウを開いた後、しばらくするとXがフリーズする
    • 素早く設定してkillall xinitするしかなさそう
    • 検証が甘いので、別の原因がある気もする
  • 入力時に極端に不安定な挙動を取ることがある
    • 日本語入力仕様と思ったらフリーズするような挙動も
    • アプデで改善せず。

公式tgzパッケージの展開

doc/ATOK/readme_for_tar.htmlの通りに、下記のファイルを展開し、/にコピーする。 今回は、GTK2.4を利用する。

/bin/IIIMF/iiimf-client-lib-trunk_r2059-js1.i386.tar.gz
/bin/IIIMF/iiimf-csconv-trunk_r2059-js1.i386.tar.gz
/bin/IIIMF/iiimf-protocol-lib-trunk_r2059-js1.i386.tar.gz
/bin/IIIMF/iiimf-rc-trunk_r2059-js1.i386.tar.gz
/bin/IIIMF/iiimf-server-trunk_r2059-js1.i386.tar.gz
/bin/IIIMF/iiimf-x-trunk_r2059-js1.i386.tar.gz
/bin/IIIMF/iiimf-gtk24-trunk_r2059-js1.i386.tar.gz
/bin/ATOK/atokx-17.0-2.0.i386.tar.gz

アップデートの適用

上記のトラブルの元になる可能性があるため、必要に応じて入れる形を推奨。

公式からATOK for Linux アップデートモジュールをダウンロードし、 tar.gz内の下記のファイルを展開し、/に上書きコピーする。

bin/ATOK/atokx-17.0-2.1.i386.patch.tar.gz
iiimf-gtk24-trunk_r2059-js2.i386.tar.gz

前提パッケージのインストール

aptに存在するパッケージを入れる。

apt install libstdc++5 libgtk2.0-0

libpangox-1.0のインストール

aptに存在しなくなってしまったlibpangoxをインストールする。 Bullseye版のdebファイルをダウンロードするか、 Debian Snapshotから適当なバージョンなりソースをダウンロードする。

Systemdサービスの定義

今回はinitスクリプトは使わず、完全にSystemdから取り扱う。

/etc/systemd/system/atokx2.serviceは下記の通り。

[Unit]
Description=ATOK X2 Daemon
After=network.target

[Service]
ExecStart=/opt/atokx2/sbin/atokx2mngdaemon
Type=forking
Restart=on-failure

[Install]
WantedBy=multi-user.target

/etc/systemd/system/iiim.serviceは下記の通り。 atokx2を前提条件にしている。

[Unit]
Description=iiim (htt)

After=network.target atokx2.service
Wants=network.target atokx2.service

[Service]
ExecStart=/usr/lib/im/htt
Type=simple
Restart=on-failure

[Install]
WantedBy=multi-user.target

最期に自動起動を有効にし、同時に初回起動もしてしまう。

systemctl daemon-reload
systemctl enable --now atokx2 iiim

xinitrcを書く

~/.xinitrcに下記の内容を記述する。

#!/bin/bash
export XMODIFIERS=@im=htt
export XIM="htt"

export XIM_PROGRAM=/bin/true

export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim

. /opt/atokx2/bin/atokx2_client.sh

exec /etc/X11/xinit/xinitrc

これで次にstartxした際にATOKが立ち上がる。