mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-14 23:46:10 +00:00
520b21cc72
A CD-ROM dictionary lookup facility (server and clients). Submitted by: Yoshio MITA <mita@jp.freebsd.org> (Closing PR #2311.)
361 lines
12 KiB
Plaintext
361 lines
12 KiB
Plaintext
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にどうぞ.
|