debian sarge に wnn7 をインストールする(wnn7,debian,colinux)
colinuxのdebianでは、apt get install anthy で即導入できるので、 anthyを日本語入力として使っていたのだが、 やはりしばらく使っていると、変換効率がよい日本語入力システムを使いたくなってきました。
手元にwnn7 Personalがあるので、これを使えないかと。 以前軽く試したところでは、 パッケージの依存関係でインストールがうまくいかないことがわかっていたのですが、 いまのわたしは、コンソールで使っているemacs上でwnn7が使用できさえすればいいので、 それならパッケージの依存の問題は回避できるのではないかと思い再挑戦することにした。
- STEP0 事前調査
- STEP1 wnn7のCD-Rをcolinuxでマウントするには
- STEP2 wnn7-serverパッケージを作り直す
- STEP3 wnn7をインストールする前の準備
- STEP4 wnn7を通常の手順でインストール
- STEP5 wnn7インストール後の処置
STEP0 事前調査
googleでwnn7とdebian sargeなどのキーワードで検索するとやはりパッケージ依存の 問題が指摘されている。 しかし、その問題になっているパッケージはどうもX関係のようです。 わたしはXを使っていないので本来関係ないはず。 この部分をうまく回避する方法がないかさらに調査してみると、 パッケージをつくりなおして、依存関係の記述行を自分で直した上で、再度パッケージすれば、 apt get install したときに問題が生じないことがわかりました。
早速インストールを開始することに・・・
STEP1 wnn7のCD-Rをcolinuxでマウントするには
わたしの使用している環境では、 colinuxからCD-ROMをマウントできなかったので、 いったん、cygwin上でCD-ROMの内容をisoイメージに変換したあと、 colinux上でそのisoイメージをマウントすることにしました。
wnn7.isoをCygwin上で作成
colinuxから、WindowsのCD-ROMドライブのマウント方法がわからなかったので、 以下の方法で回避。
e:ドライブにwnn7ディスクを入れている状態で、cygwin上で iso イメージを作成する。
$ cd /cygdrive/e/
$ mkisofs -r -J -o ~/wnn7.iso .
次に wnn7.iso をcolinuxにFTPでコピーした上で、以下のようにマウント
# mount -o loop -t iso9660 wnn7.iso /cdrom/
STEP2 wnn7-serverパッケージを作り直す
wnn7-serverはsargeなどの新しいdebianでは、 依存関係でインストールできないので、その対策を行う。
# dpkg-deb -x wnn7-server*.deb wnn7-server
# dpkg-deb -e wnn7-server*.deb wnn7-server/DEBIAN
# vi wnn7-server/DEBIAN/control
ここで control の依存関係の行を書き直します。
具体的にはDependsの行は以下のようにします。
Depends: lib6(>=2.1.2),libglib1.2 (>=1.2.0)
書き直したら、あとは、.debパッケージし直す。
# dpkg-deb -b wnn7-server wnn7-server_1.01-2_i386.deb
# dpkg -i wnn7-server_1.01-2_i386.deb
これ(wnn7-server_1.01-2_i386.deb)をもとのファイルと差し替えて (といってもCD-R上では上書きできないので、CD-R全体を作業ディレクトリにコピーした上で 該当ファイルを差し替える必要がある) あとは通常の手順でインストールすればよい。
STEP3 wnn7をインストールする前の準備
wnn7のインストールを開始する前に、 不要なパッケージを削除し、 必要なパッケージをインストールしておく。
freewnnを削除
freewnn-jserverがインストールされている場合は、 事前にを削除しておく。
# apt-get remove freewnn-jserver
anthyを削除
anthyがインストールされている場合は、 事前にを削除しておく。
# apt-get remove anthy
debhelper をインストール
debhelperが必要なのでインストールしておく。
# apt-get install debhelper
libglib1.2をインストール
wnn7-serverが必要とするパッケージなので事前にインストールしておく。 (すでにインストールされていればこの作業は不要)
# apt-get install libglib1.2
STEP4 wnn7 を通常の手順でインストール
# cd /cdrom
# sh ./Install
カスタムインストールを選択し、 以下のパッケージのみインストールする。
- Wnn7 Server パッケージ
- Wnn7 Utility パッケージ
- Wnn7 Main Dictionary パッケージ
- Wnn7 Optional Dictionary パッケージ
- Wnn7 License Server パッケージ
すべてのインストール条件が整っていればこれだけでインストールは完了します。
インストール中のエラーについて
インストール中に依存関係の問題などでうまくインストールできない場合がある。 コンソールに出力されるメッセージを良く見て、インストール失敗しているパッケージについては、 手動で削除(apt-get remove)してから、再度インストールする必要がある。
わたしの場合、wnn7-server が必要なパッケージがインストールされていないために、 なんどかインストールしなおした。
その場合は、 まず、{marker:apt-get remove wnn7-server} して削除してから、 再び、sh ./Install でwnn7を入れ直すということを繰り返した。
dpkeyservが起動できない問題
libc6 のバージョンによっては、 dpkeyservが起動できない場合がある。
その場合は、以下のように問題を解決する。
この問題については、 以下のページを参考にさせていただきました。
chroot を使って解決する方法
dpkey7 のルートを作成します。 そこに,以前の debian package である libc6_2.3.2.ds1-22_i386.deb を展開します。 また,必要となるファイルをコピーしてきます。
# mkdir /var/dpkey7root
# dpkg -x libc6_2.3.2.ds1-22_i386.deb /var/dpkey7root
# cd /var/dpkey7root
# cp /usr/sbin/dpkeyserv usr/sbin/.
# mkdir -p etc/dpkey
# cp /etc/{hosts,nsswitch.conf,protocols,services,resolv.conf} etc/.
# cp /etc/dpkey/dpkeylist etc/dpkey/.
ここで,/var/dpkey7root をルートとして /usr/sbin/dpkeyserv を動作させます。
具体的には,次のコマンドを実行します。
# chroot /var/dpkey7root /usr/sbin/dpkeyserv
dpkeyserv が動作し,Wnn7 が利用できました。
そして,マシン再起動時にも自動的に dpkeyserv が起動するように,/etc/init.d/dpkey7 を修正します。
次を追加します.
DPKEY_ROOT=/var/dpkey7root
CMD_NAME=dpkeyserv
start,restartのところの書き換え
#start-stop-daemon --start --quiet --exec $DAEMON > /dev/null 2> /dev/null
start-stop-daemon --start --quiet --chroot $DPKEY_ROOT --exec $DAEMON
stop,restartのところの書き換え
#start-stop-daemon --stop -o --quiet --exec $DAEMON > /dev/null
start-stop-daemon --stop --oknodo --quiet --name $CMD_NAME
最後にうまく起動できるかをテスト
# /etc/init.d/dpkey7 restart
STEP5 wnn7インストール後の処置
emacsから使う
aptでインストールした egg でwnn7 serverに接続できるようです。
# apt-get install egg
ちなみに、$HOME/.emacs.el は次の通り。
(setq quail-japanese-use-double-n t)
(normal-erase-is-backspace-mode 1)
(set-language-environment "Japanese")
(set-default-coding-systems 'euc-jp)
(set-buffer-file-coding-system 'euc-jp-unix)
(set-terminal-coding-system 'euc-jp)
(set-keyboard-coding-system 'euc-jp)
;;(set-input-method 'japanese-egg-anthy)
(setq make-backup-files nil)
wnn7 personal のパッケージにも wnn7egg として専用のクライアントが GPLで公開されているので組み込んでもいいとは思います。(まだテストしていない)
http://www.omronsoft.co.jp/SP/download/pcunix/wnn7/wnn7eggv102.html
computer.hが無いためクライアントが起動できない問題の回避
emacs+eggで日本語入力しようとすると、 computer.hがないといわれる。
そこで、 http://www1.accsnet.ne.jp/~gen/wnn6/setting.html, http://psux1.kek.jp/~thitoshi/install/pubdic.html
あたりから、 pubdic+ の辞書をダウンロードして展開。
makeする
$ cd pubdic+-wnn
$ make
しかし、atod がない、といわれるので、 Makefile の以下の行を以下のように直す。
ATOD=/usr/bin/wnnatod
これでmake すると、エラーは出るがこちらが目的の computer.dic は作成される。
これを以下の場所にコピー。
/var/lib/wnn7/dic/option/computer.dic
これでエラーは回避できる。
アンインストール
wnn7のCD-ROMをマウントして以下を実行
# mount -o loop -t iso9660 wnn7.iso /cdrom/
# cd /cdrom
# sh ./Install -e
# apt-get remove wnn7-server
導入後の感想
数ヵ月anthyを使っていたのだが、やはりwnn7は快適です。
anthyでは、Alt+sを使って候補から選択することが多かったのですが、
wnn7にしてからほとんど候補選択を呼び出す必要がない。
考えていることをすばやくメモしようとしたときに、意図通りの漢字が表示されずに
そこで思考が止まってしまうことがあるので、やはりこれはありがたい。
もちろん、anthyも十分に辞書を鍛えるなど適切にカスタマイズすれば快適な可能性もありますが、 わたしのようにとりあえずライティングしたい(辞書の設定に時間を使いたくはない)という 人にとってはwnn7のデフォルトでの変換効率の高さは助かります。
一方、wnn7の問題としては、emacsで日本語入力を起動するごとに、ライセンスを消費してしまうため、 わたしのように、emacsを同時に複数動かしながら作業する場合、ライセンスが全部消費されて 日本語入力ができなくなってしまうケースがあるのが問題です。 ただライセンスは3つあるので、そんなにたびたび4つ以上のemacsを使うこともさすがにないので、 問題は少ないのではないかとは思います。
wnn7の利点
- 変換効率がよいので日本語入力でストレスが少ない
wnn7の欠点
- ライセンス数分しか同時にemacsを起動して日本語入力できない
- emacs上ではじめてwnn7を起動したときに時間がかかる
これらの欠点は、emacsを起動したまま作業を続けるタイプの使い方をする人にはいずれも欠点にはならない。