aboutsummaryrefslogtreecommitdiff
path: root/japanese/dserver/files/README.FreeBSD-setup.euc
blob: 1198529fd92321e46e482c89e87be36f13ff5b21 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
                 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にどうぞ.