Nemacs

Nemacs を RedHat 5.2 (sparc) で動かす顛末記です。 そもそもが APEL の test 目的であり、日常的に使用するためでは 無いので、いくつか問題がありますが、そのままにしてあります。 i386 でも、config.h の #include "m-sparc.h" を、 #include "m-intel386"に変えてから少しがんばれば compile できるのではないかと思います。compile に成功した方は 是非 patch を公開してください。私も main machine (K6-2 300MHz, Debian GNU/Linux) に access できる環境に復帰した ときに試すつもりです。

また、EGG も CANNA も無しで compile し、termcap は install していないので、ncureses に link させました。

私は
./configure && make
su
make install
という時代の人間なので、手でいじって compile を通すなんてことは 滅多にしないのですが、昔はみんなこんなことをやっていんたんだなぁ、 と少々感慨にふけりながら source を修正して compile しました。 各 software に対してこんなことをやっているといくら時間があっても 足りないぞ。(^^;;

Emacs 18.59 を GNU の mirror から取得します。

Nemacs の patch を ftp.kddlabs.co.jp から取得します。uuencode されているので、 中身の compress された diff を gzip で圧縮しなおして、local にも置いています。

lisp/version.el には patch があたりませんが、無視します。 patch 先の file が無いと patch が途中で止まってしまうので、 emacs-18.59/src の config.h-dist を config.h に、paths.h-dist を paths.h に copy します。これらに patch 当てもそれぞれ失敗するところがありますが、無視します。 そして、次の patch のために config.h と paths.h は消去します。

次の patch を当て、必要なら config.h 等を書き換えます。 また、これを実行しようとしている人は生の Emacs 18.59 が動いていることは 無いでしょうから、build に必要な byte-compile 済み Emacs Lisp ファイル も置いておきます。

$ tar tzvf nemacs.elc.tar.gz
-rw-r--r-- penny/penny    4838 1999-09-12 13:17 emacs-18.59/lisp/kanji.elc
-rw-r--r-- penny/penny    2269 1999-09-12 13:17 emacs-18.59/lisp/kinsoku.elc
-rw-r--r-- penny/penny   19244 1999-09-12 13:17 emacs-18.59/lisp/kanji-util.elc
-rw-rw-r-- penny/penny   22636 1999-09-13 22:34 emacs-18.59/lisp/wnn-client.elc
-rw-rw-r-- penny/penny   83122 1999-09-13 22:35 emacs-18.59/lisp/wnn-egg.elc
-rw-rw-r-- penny/penny    4994 1999-09-13 22:35 emacs-18.59/lisp/wnnfns.elc
-rw-rw-r-- penny/penny   40000 1999-09-13 22:35 emacs-18.59/lisp/egg-rkdump.elc

これまでの手順

tar xzvf emacs-18.59.tar.gz
tar xzvf nemacs.elc.tar.gz
cd emacs-18.59/src
cp config.h-dist config.h
cp paths.h-dist paths.h
cd ..
gzip -cd ../Nemacs.sol2.diff.gz | patch -p1
rm src/config.h src/paths.h
gzip -cd ../nemacs-sol2-linux.diff.gz | patch -p1
make

Patch の概略

全体的に、GNU Emacs 20.4 の source を参考に変更しています。 とりあえず compile を通すために、#if defined (__linux__) というような 行がたくさんあります。 directory 構成は GNU Emacs 20.4 に従っていますが、実行ファイルは 新しい方を上書きしてしまわないように、/usr/local/nemacs/bin に、 man は /usr/local/nemacs/man に放り込むようにしています。私は ln -s /usr/local/nemacs/bin/emacs /usr/local/bin/nemacs としています。

以前 Nemacs がどこに install されていたかは知らないので、GNU Emacs 20.4 にならって、/usr/local/share/emacs/18.59/lisp に lisp ファイルを 放り込むことにしました。

既知の問題

C-z で background にして、fg で foreground にしようとすると狂います。 試していませんが、ncureses の代わりに termcap を使うとどうなるのでしょう。 日常的に使用するつもりは無いので、全く調査していません。

signal を送ることができていないようです。例えば、shell-mode で M-x interrupt-shell-subjobとしても、process は 終了しません。これについても調査するつもりはありません。


HOME
copyright (c) Yoshiki Hayashi
t90553@mail.ecc.u-tokyo.ac.jp