520b21cc72
A CD-ROM dictionary lookup facility (server and clients). Submitted by: Yoshio MITA <mita@jp.freebsd.org> (Closing PR #2311.) |
||
---|---|---|
.. | ||
deinstall.sh.inetd | ||
deinstall.sh.standalone | ||
patch-aa | ||
patch-ab | ||
patch-ac | ||
README.FreeBSD-setup.euc | ||
setup.sh.inetd | ||
setup.sh.standalone |
Dserver FreeBSD portセットアップについて. 3.Nov.1996 Revised 20.Dec.1996 三田吉郎 <mita@jp.FreeBSD.org> Special thanks to MIHIRA Yoshiro <sanpei@yy.cs.keio.ac.jp> 目次 I. インストール I.1. setup.sh の具体的な作業 I.2. 4: 辞書のコピー・マウント I.3. サーバの動作テスト II. 使う II.1. kenjiro II.2. diclookup-mule III. 削除(uninstall) IV. `inetd起動のdserver'を作る方法 IV.1. `inetd起動のdserverとは何か' IV.2. standaloneとinetdと,どちらを選択するか. IV.3. inetd起動のdserverを作る. IV.4. 初期設定スクリプトの違い. V. エラーとその対策 V.1 muleで辞書を引こうとしたのですが, いつまでたっても切り替わりません. V.2. muleで,`process *ndtp* not running'というエラーが出ます. V.3. 辞書を10種類以上にしたら途端にBus Errorで落っこちます. ※ 文中の${PREFIX}は,/usr/localに読み変えてください,portsを利用して コンパイルすると,${PREFIX}を/usr/local以外にも,自分の好みの ディレクトリに設定することができます. I. インストール dserver の ports を インストールした後に必要な作業は次の通りで す. 1: [/etc/services] に ndtp プロトコルのエントリを追加 2: dserver 起動用スクリプトの準備 3: mule クライアント diclookup-mule 用の初期設定 4: 辞書をコピーまたはマウント これらの作業は, [${PREFIX}/lib/dserver/setup.sh] を起動すると, 1~ 3 までを自動的に設定してくれます. ※ ${PREFIX} ここで ${PREFIX} とは ports をコンパイル時の環境変数 PREFIX を 示します. packages では, [/usr/local] となります. 上記の場合, [/usr/local/lib/dserver/setup.sh] と適時読みかえてください. I.1. setup.sh の具体的な作業 この setup.sh では, 具体的に次の作業を行います. 1: [/etc/services] の末尾に次の行を追加します. ----- ndtp 2010/tcp #Network Dictionary Transfer Protocol ----- 2: [${PREFIX}/etc/rc.d/dserver.sh] に次の行を追加します. これにより, OS ブート時に dserver が自動的に起動します. ----- # dserver - dictionary server if [ -f /usr/local/lib/dserver/dserver ] ; then /usr/local/lib/dserver/dserver& echo 'dserver' fi ----- 3: [${PREFIX}/lib/mule/site-lisp/site-start.el] に次の行を追加します. これにより, mule から特別な設定無しに利用できるようになります. ----- ;;; diclookup-mule: Online dictionary (autoload 'online-dictionary "diclookup-mule" "Online dictionary." t nil) (autoload 'od:lookup-pattern-edit "diclookup-mule" "Look up a word." t nil) (setq od-chujiten-flag t) ; diclookup-mule (setq od-dictfile-list '("od-chujiten" "od-kojien")) ; diclookup-mule (setq dserver-server-list '("localhost")) ; diclookup-mule (setq od-frame-geometry "+0-0" od-hide-frame 'make-invisible) ; diclookup-mule (add-hook 'od-really-quit-hook 'od-delete-frame) ; diclookup-mule (define-key-after menu-bar-file-menu [dictionary] ; diclookup-mule '("Online Dictionary" . online-dictionary) 'calendar) ; diclookup-mule ----- I.2. 4: 辞書のコピー・マウント [${PREFIX}/share/dict/cdrom/] に,それぞれの辞書をマウントします. [${PREFIX}/lib/dserver/dserver_access] のエントリと整合性を持たせる ようにしてください. makedic というプログラムを使うと,辞書サイズを概ね 1/3 に圧縮す ることができます.使い方は簡単で次の通りです. ----- makedic [オリジナルの辞書ファイル名] [新しい辞書ファイル名] ----- ※: 辞書のライセンスによる圧縮の制限 辞書をハードディスクにコピー,圧縮してよいかどうかの対応ですが, 広辞苑は×,研究社の事典は○であるなどと,各社異なります. [${PREFIX}/lib/dserver/doc/README.dserver] を御覧下さい. I.3. サーバの動作テスト desrver を立ち上げると,dserver が使えるようになるはずです.次の ように打ち込んで,簡単な接続試験をしてみましょう. ----- telnet localhost ndtp<リターン> ----- 1: 接続試験その 1, アクセス可能かどうか 接続した上で A<リターン> と打ち込むと,[dserver_access] ファイル でアクセス許可が出ている場合は $A という返事が帰って来るはずです. ----- % telnet localhost ndtp lavender: {1234} telnet localhost ndtp Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. A $A ----- ※: アクセス許可ファイルの記述の注意 dserver の仕様として, アクセス許可のチェックは IP アドレスでは なく, ホストネームで行われています. そのため, 次の場合例のように localhost とだけ書いてもうまくアクセス許可を得れない場合がありま す. 0) [/etc/hosts] に次のような行が含まれる. 例 -------- 127.0.0.1 localhost.rad.cc.keio.ac.jp localhost dserver -------- 0-1) DNS が使える環境であるが, [/etc/host.conf] で bind より host を先に書いている場合. 0-2) DNS を使えず [/etc/hosts] だけを参照する場合. その場合には, 次のように [dserver_access] に記述するとアクセス 許可を得れます. 例: [/etc/hosts] が上記のような場合. 適時 rad.cc.keio.ac.jp. を追加 してください. ----- localhost.rad.cc.keio.ac.jp ----- 2: 接続試験その 2, 辞書が使用可能かどうか? アクセス許可を得た後,T<リターン> と打ち込むと,使用可能な辞書の リストを得ることができます. 辞書リストの例: ----- T 1 研究社中和英 2 研究社中和英 3 三省堂クラウン仏和 $* ----- 辞書をインストールしたにも関わらず利用可能になっていない場合は, [dserver_access] ファイルと,CDROM のディレクトリ構造を確認してみ てください.辞書ファイルは,start とか hommon とかいう名前になって いますが,このインストール位置が狂っているばあいがよくあります. リスト中の漢字は,EUC漢字コードを使っていますので, ktermを`kterm -km euc'で立ちあげたり,ctrl+中ボタンを押して 選択するなどして,EUC漢字コードを表示できるようにしてください. II. 使う II.1. kenjiro コマンドラインから引きたい場合は kenjiro<リターン> です. 【指定辞書無し】と出たときに<ESC>キーを押すと辞書が選択できます. リストに無い辞書を読みたい場合は,ports を用意して make patch の 後 [${WRKSRC}/clients/kenjiro/config.h] を書き換えてmakeし直します. II.2. diclookup-mule 私はこちらのクライアントを気に入っています.M-x online-dictionary<リターン>で起動します. [${PRFIX}/lib/mule/site-lisp/od-***.elc]が,それぞれの辞書に 対応した外字ファイルです,これをハックすれば大抵の辞書を読むことが できるでしょう. ハックするときに,外字の形をどうやって調べるかが問題ですが,ひな がたを適当に作っておいて実際に辞書を読むと ----- 著作権表示 外字1 外字2 ----- などとメニューが表示されます.ここで外字を選択すると, 1. この辞書で登録されている外字の文字コード 2. 外字のビットマップ(;)表示 3. 外字をXウィンドウとテキスト端末とでどう表示しているか がわかりますので,それに合わせて外字テーブル(とそのコードの上位 8bitの数)を書き換えます. この ports に入っている od-crown.elc(クラウン仏和,クラウ ン独和),od-italian.elc(現代イタリア語表現辞典),od-oxford.el (オクスフォード英英辞典,シソーラス類義語辞典)は, od-chujiten.el(新英和和英)を上述の方法で私三田が hack したものです.なれれば一辞書を半日で対応できます.ぜひ対応させて, 本家に contribute しましょう. III. 削除(uninstall) 削除は,インストールの逆を行えばよいわけですが,3-1 を自動的に行 うためのシェルスクリプト,[${PREFIX}/lib/dserver/deinstall.sh] を 用意しておきました. その後で,pkg_deleteを行えばOKのはずです. IV. `inetd起動のdserver'を作る このportsでは,特に指定しない限り`standaloneのdserver'を 作るようにしていますが,`inetd起動のdserver'を作ることもできます. IV.1 `inetd起動のdserver'とは何か? これまで説明してきた例では,このportsでの標準設定である, dserverをstandaloneで使用するための設定を紹介してきました. standaloneでは,プログラムdserverシステムを起動したときから, システムが終了する時までずっと走っていて,「全ての接続要求を 一つのdserverが処理」します. inetdでは,プログラムdserverは普段は走っておらず,接続要求がくるたびに inetdから起動されます.「別々の接続要求は別々のdserverが処理」します. IV.2. standaloneとinetdと,どちらを選択するか. ライセンス制限(ファイルdserver_accessで,辞書を同時に読めるユーザ数を 制限できる機能です)を使うためには,全ての接続要求を一つのdserverが 処理する必要があるので,standaloneで立ちあげる必要があります. inetdでは,dserverを使っていないときにCDROMを差し替えることができます. amdと組み合わせるのが便利です. IV.3. inetd起動のdserverを作る. rootになって,/usr/ports/japanese/dserverのディレクトリで, ----- make package ----- と入力すると,ファイルを展開した後に, standaloneでdserverを動かすように設定するか,それとも inetdから接続するたびに呼び出すように設定するかの 選択画面になります. ----------------- dserver port configuration ----------------- | How do you want to run dserver, standalone or run by inetd?| | | | (*) standalone stanalone | | ( ) inetd inetd | | | | [ OK ] Cancel | -------------------------------------------------------------- 普段はこの画面のように,standaloneで起動する設定になっていますが, 上下カーソルとリターンキーでinetdを選択すると, inetdから呼び出す設定になります(下図はinetdを選択したところ) ----------------- dserver port configuration ----------------- | How do you want to run dserver, standalone or run by inetd?| | | | ( ) standalone stanalone | | (*) inetd inetd | | | | [ OK ] Cancel | -------------------------------------------------------------- IV.4. 初期設定スクリプトの違い. 初期設定スクリプトsetup.sh, deinstall.shは, inetd起動を選択した場合とstandaloneを選択した場合とで違ったものが インストールされます. inetd起動用のsetup.shでは,standaloneに比べて以下の点が異なっています. * /usr/local/etc/rc.d/dserver.shを作成しない. * /etc/inetd.confへのdserverのエントリを追加する. * inetdを立ちあげ直す(HUPシグナルを送る) 使い方はinetd, standalone用とも一緒です. V. エラーとその対策 V.1. muleで辞書を引こうとしたのですが,いつまでたっても切り替わりません. muleで, ----- M-x online-dictionary ----- と入力すると,辞書用のフレームが新しく作られますが,その後いつまで 経ってもタイトルが表示されない症状です. 接続許可を正しく出しているかを疑ってみます. I.3. サーバの動作テスト に従って,手動で接続してみます. 接続に失敗している場合は,${PREFIX}/dserver/dserver_accessファイルで アクセス許可を正しく出します. -----接続に成功している例: % telnet localhost ndtp lavender: {1234} telnet localhost ndtp Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. A $A ----- -----接続に失敗している例: % telnet localhost ndtp lavender: {1234} telnet localhost ndtp Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. A $N ----- V.2. muleで,`process *ndtp* not running'というエラーが出ます. standaloneの場合,dserverが何かの原因でこけたのでしょう. もう一度dserverを立ちあげ直してみてください. ----- %su root #/usr/local/lib/dserver/dserver& ----- V.3. 辞書を10種類以上にしたら途端にBus Errorで落っこちます. server2.2-pl2/config.hの,MAXDICTの値を10から増やして コンパイルし直しましょう. ※dserver_accessファイルの設定を変更している場合,バックアップしておきます. ----- % su root #cp /usr/local/lib/dserver/dserver_access /tmp/dserver_access.orig # cd /usr/ports/japanese/dserver # make patch # vi work/dserver/server2.2-pl2/config.h # make install #cp /tmp/dserver_access.orig /usr/local/lib/dserver/dserver_access ----- 質問,不平不満など御座いましたらmita@jp.FreeBSD.orgにどうぞ.