from 和ジオ

NetBSD 2.0 + emacs + ATOK X で日本語入力をする

NetBSD 環境構築

NetBSD 2.0 + emacs + ATOK X で日本語入力をする

はじめに

せっかくなので、サーバアプリだけでなくクライアントアプリも NetBSD でためしてみようということで、emacs と ATOK X を入れてみました。(X じゃなく IIIMECF でのお話です)

しかし! なにが悪いのか、動くには動くのですが、ATOK 漢字入力中に emacs がフリーズしてしまうことがあります。 失敗ものせる方針のサイトなので一応、やったことをメモします。:-)

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/

以下のメモは、バイナリパッケージ版を元に書いています。

Linux エミュレーション

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 のインストール

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

こんな感じになればいいはず・・・。

Mule-UCS & IIIMECF インストール

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 につないで試験をしています。

NetBSD で ATOK を使っているの図

しかし、再現性がよく分からないのですがたまに emacs ごとフリーズしてしまうことがあります。一文字で確定とか、「。」とか記号を入れるとか、高速入力するととかなにか法則性がありそうなのですが、分かりま せんでした・・・。

たぶん、ぼくがなにかポカっているだけだとおもうので、チャレンジしてうまくいった方がいたら教えて下さい。。