freebsd-ports/japanese/dserver/files
Masafumi Max NAKANE 520b21cc72 New port, dserver:
A CD-ROM dictionary lookup facility (server and clients).

Submitted by:	Yoshio MITA <mita@jp.freebsd.org>
(Closing PR #2311.)
1997-01-29 03:56:05 +00:00
..
deinstall.sh.inetd New port, dserver: 1997-01-29 03:56:05 +00:00
deinstall.sh.standalone New port, dserver: 1997-01-29 03:56:05 +00:00
patch-aa New port, dserver: 1997-01-29 03:56:05 +00:00
patch-ab New port, dserver: 1997-01-29 03:56:05 +00:00
patch-ac New port, dserver: 1997-01-29 03:56:05 +00:00
README.FreeBSD-setup.euc New port, dserver: 1997-01-29 03:56:05 +00:00
setup.sh.inetd New port, dserver: 1997-01-29 03:56:05 +00:00
setup.sh.standalone New port, dserver: 1997-01-29 03:56:05 +00:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

                 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にどうぞ