せっかくなので、サーバアプリだけでなくクライアントアプリも NetBSD でためしてみようということで、emacs と ATOK X を入れてみました。(X じゃなく IIIMECF でのお話です)
しかし! なにが悪いのか、動くには動くのですが、ATOK 漢字入力中に emacs がフリーズしてしまうことがあります。 失敗ものせる方針のサイトなので一応、やったことをメモします。:-)
最初に emacs をインストールします。 フリーズの問題があったのでいくつか試しています。
まずは、バイナリパッケージ版。
pkg_add ftp://ftp.jp.netbsd.org/pub/NetBSD/packages/2.0/i386/editors/emacs-nox11-21.4a.tgz
.
次は、ソースパッケージ版。
# cd /usr/pkgsrc/editors/emacs
# make fetch-list | sh
# make
# make install
# make clean CLEANDEPENDS=YES
しかし・・・、こちらは xpm-3.4 がダウンロードできずインストール不能でした。
最後は、emacs の CVS からインストール版。
$ mkdir ‾/Application
$ cd ‾/Application
$ mkdir emacs
$ cd emacs
$ setenv CVS_RSH ssh
$ cvs -d :ext:anoncvs@savannah.gnu.org:/cvsroot/emacs co emacs
% cd emacs
% ./configure --prefix=/usr/local/emacs-current
% make bootstrap
# make install
# ln -s /usr/local/emacs-current/bin/emacs /usr/bin/emacs-current
site-lisp のありかは、下記のようになりました。
:: emacs-current版
/usr/local/emacs-current/share/emacs/site-lisp
:: NetBSD パッケージ版
/usr/pkg/share/emacs/site-lisp/
以下のメモは、バイナリパッケージ版を元に書いています。
ATOK X は Linux 用のアプリケーションなので、NetBSD の Linux エミュレーション機能を使います。 GENERIC kernel は標準で この機能が ON になっているようです。
Linux ライブラリが必要な気がしたので suse91_base を入れてみました。(確証なし・・・)
# cd /usr/pkgsrc/emulators/suse91_base
# make fetch-list | sh
# make
# make install
# make clean CLEANDEPENDS=YES
:: ここに入る
:: /usr/pkg/emul/linux
ATOK X をインストールします。 rpm パッケージであると、3.0 の rpm コマンドを要求されてインストールできなかったので、tar を展開してインストールしました。
:: Atok を tar からインストール後
:: パッチ
# tar xvzfP iiimf-1-2.i386.patch02.tgz
# tar xvzfP atokx-1.0-1.i386.patch01.tgz::
:: libX11.so.6.2 を Fedora Core 2 からコピーしてきて
:: /usr/pkg/emul/linux/usr/X11R6/lib/libX11.so.6 シンボリックリンク作成
# sh
# export LD_PRELOAD=/usr/pkg/emul/linux/usr/X11R6/lib/libX11.so.6
# export LANG=ja_JP.EUC
# /usr/lib/locale/ja/atokserver/atokmngdaemon
# /usr/lib/im/htt -port 9010 -syslog -message_locale C >/dev/null 2>&1 &
# exit
:: とりあえずこれで起動。起動シェルは適当に後で作ろう・・・
/usr/lib/im/htt を起動しようとすると「libX11.so.6」を要求されました。 とりあえず、Fedora CORE 2 に libX11.so.6.2 バイナリがあったのでこれを、/usr/pkg/emul/linux/usr/X11R6/lib/ にコピーし、「libX11.so.6」としてシンボリックリンクを貼り、起動させました。
# ps -ax
96 p0 S 0:00.01 /usr/lib/im/htt -port 9010 -syslog -message_locale C
97 p0 S 0:00.05 htt_server -port 9010 -syslog -message_locale C
98 p0 S 0:00.00 htt_server -port 9010 -syslog -message_locale C
99 p0 S 0:00.00 htt_server -port 9010 -syslog -message_locale C
100 p0 S 0:00.00 htt_server -port 9010 -syslog -message_locale C
こんな感じになればいいはず・・・。
emacs から ATOK X を呼び出すために、 IIIMECF をインストールします。
IIIMECFが Mule-UCS を必要するので、Mule-UCS から。
:: とりあえず wget いれなきゃ
# cd /usr/pkgsrc/net/wget
# make fetch-list | sh
# make
# make install
# make clean CLEANDEPENDS=YES
::Mule-UCS
$ wget ftp://ftp.m17n.org/pub/mule/Mule-UCS/test/Mule-UCS-current.tar.gz
$ emacs -q --no-site-file -batch -l mucs-comp.el
$ cd lisp
# mkdir /usr/pkg/share/emacs/site-lisp/Mule-UCS
# cp -R * /usr/pkg/share/emacs/site-lisp/Mule-UCS
$ vi .emacs
(require 'un-define);
(require 'jisx0213);
(set-language-environment "Japanese")
その後、IIIMECF をインストールします。
$ wget ftp://ftp.m17n.org/pub/mule/IIIM/IIIMECF-0.6.tar.gz
$ tar zxvf IIIMECF-0.6.tar.gz
$ cd IIIMECF-0.6
$ emacs -q --no-site-file -batch -l iiimcf-comp.el
$ cd lisp
# mkdir /usr/pkg/share/emacs/site-lisp/IIIMECF
# cp -R * /usr/pkg/share/emacs/site-lisp/IIIMECF
$ vi .emacs
(setq emacs-ime "atokx")
(if (or (equal emacs-ime "atokx")
(equal emacs-ime "atok")
)
(progn
(require 'un-define)
(setq coding-category-utf-8 'utf-8)
(setq iiimcf-server-control-hostlist '("localhost"))
(setq iiimcf-server-control-default-language "ja")
(setq default-input-method 'iiim-server-control)
(require 'iiimcf-sc)
(define-key global-map "¥C-¥¥" 'toggle-input-method)
(setcar default-mode-line-format "")
)
)
これで emacs を起動し、CTRL + ¥ を押すと ATOK X が起動するはずです。(setenv LANG ja_JP.EUC を事前にしないと入力文字が「??」になってしまいます)
というわけで、こんな感じで入力できると思います。ターミナルから NetBSD につないで試験をしています。
しかし、再現性がよく分からないのですがたまに emacs ごとフリーズしてしまうことがあります。一文字で確定とか、「。」とか記号を入れるとか、高速入力するととかなにか法則性がありそうなのですが、分かりま せんでした・・・。
たぶん、ぼくがなにかポカっているだけだとおもうので、チャレンジしてうまくいった方がいたら教えて下さい。。