Debian lenny (以降) で Wnn7 を使う

ハードディスクが飛んでしまい、これを機会に Debian の新しいバージョンをすっかりはじめからインストールした。随分楽になったものだ。さてここでシステムの locale を最近の流行りにしたがって ja_JP.UTF-8 にしたのだが、これが後で問題となった。 sid (unstable) に入れ替えつつ、さらに必要なものを少しづつインストールして、クラッシュ直前の使い勝手に近づいてきたのだが、常用していた debian 外の日本語入力システム Wnn7 はライブラリの依存の問題でインストールすることができなかった[1] 。商用ソフトでしかも2001年発表というものなので、しかたないかもしれない。Wnn8 ならインストールできるかもしれないが、これですら2005年発表なので今さら買う気にもなれない。 1ヵ月ほど Anthy を使ってみたものの、20年近くも Wnn を使い続けてきた感覚のためか、どうにもストレスを感じて仕方がない。特に Wnn7 の「異体字変換」機能に相当するものを Anthy に見つけることができなかったところで、とうとう我慢ができなくなった。 というわけで、Wnn7 を2009年1月現在の debian sid にインストールしてみることにした。アップデートセンター から(当時の debian に対応した) deb パッケージが手にはいる。

dpkey7

そのままではインストールはできるが libc6 のバージョンが合わず起動しない。ここでは強引な方法で解決した。上記のアップデートセンターの「ライセンスサーバー」の項を見ると「glibc2.3 対応版」が出ていることがわかる(ただし rpm のみ)。この中から実行ファイルのみ(2つ)を取り出して、これに差し換えた deb を作り直してインストールすることにした。 ネットで検索すると、chroot 環境に古い libc6 (libc6_2.3.2.ds1-22_i386.deb) を飼うという解決法が見つかる。さらに将来を考えるとこのほうがいいのかもしれない。

wnn7-utils、辞書

wnn7-utils, maindic, optiondic は特に問題なくインストールできる。

wnn7-server

# dpkg-deb -x wnn7-server_1.01-1_i386.deb wnn7-server
# dpkg-deb -e wnn7-server_1.01-1_i386.deb wnn7-server/DEBIAN
で開梱し、DEBIAN/control の Depends の行にある古いライブラリを現在のものに書き換える。 libglib1.2 は libglib1.2ldbl に、またxlib6g はなくなってしまったので、個々のライブラリにする。したがって depand の行は
 Depends: libc6 (>= 2.1.2), libglib1.2 (>= 1.2.0)|libglib1.2ldbl, libgtk1.2 (>= 1.2.7-1), libXi6, libxext6, libx11-6, libxau6, libxcb-xlib0, libxcb1, libxdmcp6
とした。libgtk1.2 は辛うじて現在の debian にも残っているのでよかった。 開梱したものを
# dpkg-deb -b  wnn7-server wnn7-server_1.01-1p1_i386.deb
のようにして再びパッケージ化して、インストールした。

wnn7-elisp

Depends に Emacs のバージョンが固定的に書かれているので、新しいEmacs でも大丈夫なように、先ほどと同様に、emacsen と書き加える。 また、usr/lib/emacsen-common/packages/*/wnn7-elisp の中の case 文にもバージョンが固定的に書かれているので、ここに新しいバージョンを加える。 ここまでで、dpkeystat で ライセンスサーバが起動していることを確認でき、wnnstat で変換サーバが起動していることを確認できる。そして Emacs をクライアントとして正しく日本語入力と変換ができることを確認できる。

wnn7-xclients

最後に、xwnmo の含まれるこのパッケージも、同様に Depends の行を書き換える。
 Depends: debhelper, debconf, libc6 (>= 2.2.4-4), libglib1.2 (>= 1.2.0)|libglib1.2ldbl, libgtk1.2 (>= 1.2.10-4), libXi6, libxext6, libx11-6, libxau6, libxcb-xlib0, libxcb1, libxdmcp6, libXmu6, libXt6, libsm6, libice6
とした。

設定

はじめに書いたようにシステムの locale を UTF-8 にしたのだが、これが原因で xwnmo が機能しなかった。ユーザーの .bash_profile で、LANG=ja_JP.eucJP と設定することにした。他のアプリケーションでそのうち困ることが出てくるかもしれないが。 そのほかの環境変数は、Wnn7 をインストールするより前に Anthy を入れた関係で im-switch もインストールしていたので、この際その流儀に合わせることにした。/etc/X11/xinit/xinput.d/ の default-xim を xim-wnn7 という名前でコピーして
XIM=_XWNMO
XIM_PROGRAM="/usr/bin/xwnmo"
XIM_ARGS="-map -g 1x1-0-0"

GTK_IM_MODULE=xim
QT_IM_MODULE=xim
とした(XIM_ARGSはご自由に)。あとは im-switch -s xim-wnn7 で切り替えておく。
  1. ハードディスクが壊れる直前はその時点でほぼ最新の sid だったのだが、ずっと以前にインストールした Wnn7 に依存される形で古いライブラリが残っていて、 Wnn7 は正常に動いていた。