Namazu で RFC 文書を検索できるようにしてみました
RFC 文書は膨大なので目的の文書を探すのが大変。 ということで Namazu で検索できるようにしてみました。 (私は別に技術者でも何でもないんですがカントリーコードとか http サーバの返してくる番号の解説とか面白そうなのが載っているので。)
大抵の場合 Perl も Namazu もインストールされているはず。
Namazu と kakasi がインストールされていない場合は以下のサイトからダウンロードしてきてお馴染みの手順で入れます。
入れ方は共通。
$ ./configure --prefix=/usr $ make $ su # make install
Namazu の ./configure 時に File::MMagic が無いとのエラーが出た場合は Namazu を展開したディレクトリにある File-MMagic/ に移動して File::MMagic をインストールした後でもう一度 ./configure に挑戦しましょう。
$ perl Makefile.PL $ make $ su # make install
RingServer から tar.gz 型式で入手するのが楽かも。
ftp://ftp.dnsbalance.ring.gr.jp/pub/doc/RFC/tar/RFC-all.tar.gz
入手したアーカイブから今回はテキストファイルだけを /uer/doc/rfc に置いて使うことに。
# mkdir /usr/doc/rfc # tar zxvf RFC-all.tar.gz -C /usr/doc/rfc
上手くインストールできたら早速検索対象をインデックス化しましょう。
まずインデックスファイルを置くディレクトリを作ります。
# mkdir /usr/doc/rfc/nmz
早速インデックスファイルの作成開始。
# mknmz -O /usr/doc/rfc/nmz /usr/doc/rfc/*.txt
3000 ファイル以上あるのでかなり時間がかかります。
mknmz が対応している文書形式以外の型式のファイルはインデックス化されないので注意。
まあ、UNIX 系の OS で扱う大抵の型式はサポートしてくれていますが。
うまくインデックス化が終了すると以下のファイルができます。
$ ls /usr/doc/rfc/nmz/ NMZ.body NMZ.field.uri.i NMZ.result.normal.fr NMZ.body.es NMZ.foot NMZ.result.normal.ja NMZ.body.fr NMZ.foot.de NMZ.result.normal.pl NMZ.body.ja NMZ.foot.es NMZ.result.short NMZ.body.pl NMZ.foot.fr NMZ.result.short.de NMZ.field.date NMZ.foot.ja NMZ.result.short.es NMZ.field.date.i NMZ.foot.pl NMZ.result.short.fr NMZ.field.from NMZ.head NMZ.result.short.ja NMZ.field.from.i NMZ.head.de NMZ.result.short.pl NMZ.field.message-id NMZ.head.es NMZ.slog NMZ.field.message-id.i NMZ.head.fr NMZ.status NMZ.field.newsgroups NMZ.head.ja NMZ.t NMZ.field.newsgroups.i NMZ.head.pl NMZ.tips NMZ.field.size NMZ.i NMZ.tips.es NMZ.field.size.i NMZ.ii NMZ.tips.fr NMZ.field.subject NMZ.log NMZ.tips.ja NMZ.field.subject.i NMZ.p NMZ.tips.pl NMZ.field.summary NMZ.pi NMZ.version NMZ.field.summary.i NMZ.r NMZ.w NMZ.field.to NMZ.result.normal NMZ.wi NMZ.field.to.i NMZ.result.normal.de NMZ.field.uri NMZ.result.normal.es
インデックス化ができたら試しに namazu コマンドで検索してみましょう。
$ namazu http /usr/doc/rfc/nmz
これで http という文字列が含まれるファイルを検索してくれます。
同じように mknmz コマンドを実行すると、追加されたファイルや更新されたファイルの分だけインデックスファイルを更新します。
というわけなので一番最初のインデックス作りが一番時間がかかります。
端末エミュレータから namazu コマンドを使うのもいいけど Emacs から呼びだしたい場合は emacs-w3m を使うと便利です。
emacs-w3m はテキストブラウザの w3m を Emacs で使えるようにするナイスなソフトです。当然ながら動作には w3m が必要になります。
大抵の場合 w3m も emacs-w3m もインストールされていたりする。
インストールされていない場合は以下のサイトから入手。
二つともインストール方法は ./configure を使ったオーソドックスな物なのでさっさと入れていまいましょう。w3m はメジャーなソフトウェアなのでディストリビューションによっては最初からインストールされているかも。
~/.emacs や ~/.emacs.el などの Emacs の初期化ファイルに emacs-w3m を使う記述を書きます。
(autoload 'w3m "w3m" "Interface for w3m on Emacs." t)
さらに emacs-w3m から Namazu を呼ぶ記述を次の行に追加。
(autoload 'w3m-namazu "w3m-namazu" "Search files with Namazu." t)
さらにショートカットキーの設定を次の行に。
(global-set-key "\C-ce" 'w3m-namazu)
そして Namazu のインデックスファイルがある場所を設定。(ディレクトリはスペースで区切って複数指定できます)
(setq namazu-default-dir "/usr/doc/rfc/nmz")
これで設定完了。Emacs を再起動して Ctrl + c そして e を押すと検索できます。
w3m / emacs-w3m には w3m-namazu 機能以外にも便利機能が用意されていますがここでは省略しています。