Emacs 22.1.1 インストールノート on Ubuntu 7.04@ガンダム風

Emacs 21.4.1 + mule-ucs 遅いぞ、何やってんの!!(by ブライト@ガンダム

今まで、Ubuntu 日本語化チームが用意してくれた Emacs 21.4.1 (+ emacs-env-ja + mule-ucs + その他の el パッケージ) を apt-get install して使用していたが、遅すぎるのと grep-find した時にしょっちゅう固まるのに常々不満を持っていた。

開発業務に戻ったこともあり、ここは心機一転して、実に5年半ぶりにリリースされたメジャーバージョン22.1.1を使用してみることにした(2007年6月にリリース)。まだ Ubuntu のレポジトリには入っていないので、FSF からソースをダウンロードしてきてコンパイル & インストールする。エラーもなく configure && make && sudo make install で成功。


Emacs 22.1.1 立て、立ってくれよぉー!!(by アムロガンダム

GNU Emacs
http://www.gnu.org/software/emacs/emacs.html

GNU Emacs 22.1 released
http://lists.gnu.org/archive/html/info-gnu-emacs/2007-06/msg00000.html

いろいろ入れた .el パッケージと混在するのも嫌なので、心機一転のついでに OS も再インストールすることにした。以下はインストール直後からコンパイル環境もふくめた手順。

  • 1. Ubuntu 7.04をインストールする。
  • 2. Emacs 22 のコンパイルに必要な下記のパッケージをインストールする。注意したいのは libx11-6 関連のライブラリとヘッダで、これらを入れないとコンパイルは通るがX Window System上での起動ができない(デフォルトでemacs -nwのように端末内での起動になってしまう)。
$ sudo apt-get install gcc gcc-doc g++ --yes
$ sudo apt-get install libc6 libc6-dev glibc-doc --yes
$ sudo apt-get install libpthread20 libpthread-dev --yes
$ sudo apt-get install libncurses5 libncurses5-dev --yes
$ sudo apt-get install libx11-6 libx11-dev --yes
  • 3. FSF のページからEmacs 22のソースをダウンロードしてきて、コンパイル&インストールする。
$ md5sum emacs-22.1.tar.gz 
6949df37caec2d7a2e0eee3f1b422726  emacs-22.1.tar.gz
$ tar zxvf emacs-22.1.tar.gz 
$ cd emacs-22.1/
$ ./configure
$ make
$ sudo make install

以上で、インストールは完了。

見せてもらおうか。Emacs 22.1.1 の新機能とやらを!!(by シャア@ガンダム

リリースページにもあるが個人的に気づいた点を大小問わず挙げてみる。

  • 1. Unicode サポートが標準になった。これで普通に UTF8 が使え、メチャ重い mule-ucs の暗黒時代から脱け出すことができた。かなり嬉しい。
  • 2. X Window System からのドラッグ&ドロップに対応。けっこう嬉しい。
  • 3. Dired モードでマウスをファイルにあわせるとウィンドウが分割されてファイルの内容が下半分のウィンドウに表示。ディレクトリの場合は ls -l の内容を表示。なかなか、嬉しい。
  • 4. M-x のキーバインドで呼び出す時に、ミニバッファが青色。嬉しい、かな。
  • 5. emacs -nw で端末内で起動させて日本語入力すると必ず落ちる。これ、どうしたもんかな。


Emacs 21.4.1 とは違うのだよ、21.4.1 とは!!(by ランバ・ラルガンダム

今まで入っていた Emacs 21.4.1 + .el パッケージ群。ずいぶんいろいろ入れていたので起動もメチャ遅かった。
BEFORE)

$ dpkg -l | grep emacs | awk '{print $2}'
apel
emacs
emacs-el
emacs-env-ja
emacs-goodies-el
emacs21
emacs21-bin-common
emacs21-common
emacs21-el
emacsen-common
xemacs21
xemacs21-basesupport
xemacs21-bin
xemacs21-mule
xemacs21-mulesupport
xemacs21-support
$
$ time emacs
real    0m17.801s
user    0m0.204s
sys     0m0.036s
$

OS 再インストールとともにソースからコンパイル & インストールした Emacs 22.1.1。速い!つーか、通常の 3 倍(スマン)どころじゃない速さ。ザク…じゃなくて 21.4.1 とは違うな、やっぱり。

AFTER)

$ dpkg -l | grep emacs | awk '{print $2}'
$
$ time emacs
real    0m2.825s
user    0m0.252s
sys     0m0.016s

認めたくないものだな。自分自身の…若さゆえの過ちというものを。(by シャア@ガンダム

必要のない .el パッケージをなんでもかんでも apt-get install で放りこんで速度&安定性ともに犠牲にしていた前回を深く反省した。これからは .el ファイルは必要なものだけ site-lisp 配下に格納していく予定。

戦いとは、いつも2手、3手先を考えて行うものだ。(by シャア@ガンダム

また、"lisp", "site-lisp" など load-path で見に行く .el ファイル群が Ubuntu だと /usr/share/emacs/[emacs-version] 配下にインストールするが、ソースからだと /usr/local/share/emacs/[emacs-version] 配下にインストールされる。configure の prefix を変えればいいのだろうけど、管理を自前でしたいので、これからは Ubuntu から src.deb だけ DL して展開したものを /usr/local/share/emacs[emacs-version] に格納していくことにする。
今のところ、gtags.el(global に付属)とxscope.el(cscopeに付属)をsite-lisp 配下に持ってきている。ここに置いておけば normal-top-level-add-subdirs-to-load-path (subdirs.el の中)が自動的に load-path に加えておいてくれるので便利。

さあ、バリバリ C++ プログラミング ... の前に gtags 関連の elisp でも書くか(をい)。