2010年4月21日水曜日

せっかく ispell 入れたけど aspell に…

せっかく ispell を導入したのですが、 What's the Difference Between Ispell and Aspell? に気になることが書かれています。

...Its primary advantage is that it is better at making suggestions when a word is seriously misspelled... Its disadvantage is that the approximate-matching algorithm is specific to English.

私が綴りを確認したいのは英語なので、aspell の方が適しているのかもしれません。

となれば、早速 aspell をインストールします。 過去には OpenSolaris のリポジトリに存在したようなのですが、 最新のビルドでは見つからないため、自前で構築します。

まずは、インストール先の確保。 個人的な習慣なのですが、GNU 系のモジュールを自分で構築した場合は、/opt/gnu に配置することにしています。 最近は欲しいものがほとんどリポジトリから入手できるので、インストール先のディレクトリすら作成してませんでした。

$ pfexec mkdir /opt/gnu
$ mkdir /export/opt/gnu
$ pfexec vi /etc/vfstab
$ tail -1 /etc/vfstab
/export/opt/gnu - /opt/gnu lofs - yes -
$ pfexec mount /opt/gnu

続いて、aspell 本体を構築します。 実は最初は Sun 謹製のコンパイラを使用したのですが、コンパイルエラーになりました。 ならばということで gcc を試したのですが、これもコンパイルエラー。 gcc --version で確認すると 3.4.3。ちょっと古めです。 そういえばと言うことでパッケージマネージャーで gcc を検索すると 4.3.3 があったのでこちらをインストール。 ところがこのコンパイラでもエラー。 エラーメッセージに wget_wch というシンボルがでているので man コマンドで確認すると、XPG4 の curses ライブラリに含まれていることがわかります。 該当するファイル prog/check_funs.cpp を眺めても、curses がらみであることは明らかです。 となれば、CXXFLAGS を設定すればと考えたのですが、関係ない部分に影響を与えるのは馬鹿っぽいです。 README を眺めていると、--enable-curses--enable-curses-include を使えば良さそうです。

$ wget -P /PATH/TO/WAREHOUSE ftp://ftp.gnu.org/gnu/aspell/aspell-0.60.6.tar.gz
$ gtar xfz /PATH/TO/aspell-0.60.6.tar.gz 
$ cd aspell-0.60.6
$ ./configure --prefix=/opt/gnu CC=/usr/gcc/4.3/bin/gcc CXX=/usr/gcc/4.3/bin/g++ --enable-curses='-L/usr/xpg4/lib -R/usr/xpg4/lib -lcurses' --enable-curses-include=/usr/xpg4/include
$ gmake
$ gmake install

aspell をインストールした後は、辞書をインストールします。 こちらのインストールには先にインストールした aspell が使用されます。

$ wget -P /PATH/TO/WAREHOUSE ftp://ftp.gnu.org/gnu/aspell/dict/en/aspell6-en-6.0-0.tar.bz2
$ bzip2 -d -c /PATH/TO/aspell6-en-6.0-0.tar.bz2 | gtar xf -
$ cd aspell6-en-6.0-0
$ PATH=/opt/gnu/bin:$PATH ./configure 
Finding Dictionary file location ... /opt/gnu/lib/aspell-0.60
Finding Data file location ... /opt/gnu/lib/aspell-0.60
$ gmake
$ gmake install

Emacs の中からは ispell という名前で起動しますので、 aspell が提供している ispell 互換スクリプトをインストールします。

$ cp -p scripts/ispell /opt/free/bin/ispell

ここで Emacs から M-x ispell を実行してみるとエラーになります。

Error: No word lists can be found for the language "ja_JP".

綴りを調べたいのは英語だけですので、先ほどのスクリプトで言語を指定することにします。

$ diff -u scripts/ispell /opt/free/bin/ispell
--- scripts/ispell 水 10月 27 02:12:17 2004
+++ /opt/free/bin/ispell 水  4月 21 16:59:50 2010
@@ -6,6 +6,8 @@
 #   mapping when checking files with the "ispell command".
 #CHECK_FLAGS="--keymapping=ispell"
 
+LANG=en_US.UTF-8 export LANG
+
 command=""
 
 for p

これで無事に aspell が使えるようになりました。

0 件のコメント:

コメントを投稿