ihave - みる会図書館


検索対象: UNIX MAGAZINE 1992年8月号
10件見つかりました。

1. UNIX MAGAZINE 1992年8月号

連載 / IJ NIX Communication N0tes—⑩ 2. (nadia) Message-ID リストを本文としてもつ ihave コントロール・メッセージを才齬哥する。 3. (nadia) sendbatches などで記事を wazuka に送る。 4. (wazuka) ihave コントロール・メッセージのなかの Message-ID と自分の history を照らし合わせ、もっ ていない記事の Message-ID リストを作る。それを本 文としてもつ sendme コントロール・メッセージを投 稿する。 5. (wazuka) sendbatches などで記事を nadia に送る。 6. (nadia) sendme コントロール・メッセージの本文 をなす Message-ID リストと自分の history とを照 らし合わせ、 wazuka 向けの記事のファイル名リスト (NEWSARTS/out. going/wazuka/togo) を作成す る。 7. (nadia) sendbatches などで、請求された記事を wazuka に送る。 ihave/sendme を双方向におこなう場合、 wazuka と nadia を入れ替えた同し手順が並行しておこなわれます。 ihave/sendme コントロール・メッセージはどちらも、 メッセージを発信したニュースシステム名を引数にもちま す。上の例だと、 nadia が発信する ihave コントロール・ メッセージのヘッダの Control: と Newsgroups: フィ ルドは、 Cont て 01 : ihave nadia Newsgroups : tO. vazuka となり、 wazuka が発信する sendme コントロール セージでは、 Contr01 : sendme . wazuka Newsgroups : tO. nadia となります。 ・メノ ihave/sendme プロトコルには大きく分けて 2 つの用 途があります。 1 つは、文字どおり相手がもっていない記 事だけを送付することで、無駄な伝送を減らすためです。 もう 1 つは、相手に送った記事に関する ihave をある程 度の時間をおいて送り、なんらかの事故で相手か取りこば した記事を自送するものです。こちらは冗長 ihave な どと呼ばれます。 UNIX MAGAZINE 1992.8 ihave/sendme の基本設定 以降、前述の手順に従って、普通の ihave/sendme に 必要な設定を説明します。冗長 ihave などはそのあとで説 明します。 前回までに説明したことですが、 NE 、 VSARTS/ out ・ going の下のディレクトリは手動で作成する必腰か あります。これを忘れると、 NEWSCTL/errlog に relaynews : can ) t open ( out ・ going/wazuka. wehave/ togo' ()O such file or directory) というエラーが残りますが、うつかりしていると翌日の newsdaily からのメールを読むまで気づきません。注意 しましよう。 Message-ID の蓄積 前々回 ( 1992 年 6 月号 ) に説明したように、第 3 フ ィールドを I としたエントリを NEWSCTL/sys に作り ます。 wazuka. wehave/wazuka:all , ! 10Ca1 , ! to / a11 , ! 10Ca1 : I 工ントリの名前が wazuka. wehave である必要はあ りません。 wazuka と wazuka. ihave は使えませんが、 wazuka に . ( ピリオド ) と何かを連結した名前ならなん でもかまいません。ただし、ピリオドを 2 回使っては いけません。つまり、 wazuka. i-have はいいのですが、 wazuka. i. have は駄目です。ここでは、 Cnews のドキュ メントの例のとおり、、 . wehave" を使います。 、、 /wazuka" とあるのは、 wazuka からきた記事に関す る ihave を wazuka に送るのは無駄だからです。これ で、記事の Message-ID が NEWSARTS/out. going/ wazuka. wehave/togo に蓄積されていきます。 第 2 フィールドで重要なのは、 !to です。これがな いと、 wazuka 以外のシステムに宛てた ihave コント ロール・メッセージが wazuka に送られてしまいます。 to. wazuka に投稿された記事は wazuka に送ってもいい ようなものですが、 ihave コントロール・メッセージ自身 に関する ihave を送ることになり、二重再送の危険が生し るので !to,to . wazuka とはしません。 同しことがほかのシステムに対しても起こります。この バージョンの Cnews で ihave/sendme を運用する則に 59

2. UNIX MAGAZINE 1992年8月号

連載 ,/UNIX Communication Notes—O wazuka : naniwa, t0. wazuka/all , ! 10Ca1 : f wazuka: comp,news ,fJ ,to . wazuka/all, ! 10Ca1 :f wazuka: a11 , ! 10Ca1 , ! t0 / a11 , ! 10Ca1 : I \ wazuka. wehave/wazuka: comp,news,fj/all, ! 10Ca1 : I. \ wazuka. wehave/togo wazuka. wehave/ihave . 4 naniwa 以外のニュースグループでも、 nadia て投稿さ こうすると、 Message-ID のリストが NEWSARTS れた記事はわざわざ ihave を送るまでもなく、いきなり /out ・ going/wazuka. wehave/ihave. 4 に溜められます。 送ってもかまわないでしよう。この場合、第 3 フィ ール そして、 ihave. 4 → ihave. 3 → ihave. 2 → ihave. 1 → ドに L を指定します。 ihave. 0 → togo と内容を 6 時間ごとに移してゆけば、 24 時間以 30 日判り以内の遅れで冗長 ihave を送れます。 wazuka : naniwa, t0. wazuka/all , ! 10Ca1 : f wazuka: a11 , ! 10Ca1 , ! to / a11 , ! 10Ca1 :fL: こで、 sendbatches の重力作と ihave. 0 → togo の移 wazuka: a11 , ! 10Ca1 , ! to / a11 , ! 10Ca1 : I ・ \ し替え重川か重なるといけないので、きちんとロックした wazuka. wehave/togo うえで内容の移し替えをおこなう必要があります。 送った記事に関する ihave も作られることを気にしな たとえは、リスト 3 のようなシェル・スクリプトでいい ければ、次のようにしてもいいでしよう。 でしよう。これは sendbatches を参考にして筆者か書い たものです。 shiftihave wazuka を 6 時間ごとに cron wazuka : naniwa, tO. wazuka/all , ! 10Ca1 : f からおこなうようにします。 wazuka:all, ! 10Ca1 , ! t0 / a11 , ! 10Ca1 :fL: wazuka. wehave/wazuka:all, ! 10Ca1 , !naniwa, !to\ このスクリプトでのロックは、 sendbatches ? ? ? / a11 , !local:l: have との同時実行しか排除していません。 冗長 ihave/sendme mv ihave .4 ihave . 3 己事を送って、しかもその記事に関する ihave を送る 一三ロ を relaynews が ihave. 4 に書き込んでいる最中におこな う可能性がありますが、 mv なのて大丈夫です。 wazuka: comp,news ,fj ,to. wazuka/all, ! local:f wazuka. wehave/wazuka : comp ,news , fj / a11 , ! 10Ca1 : I : とすればいいようですが、これではあまり冗長になりませ ん。 ihave が記事とはとんど同時に届けられるからです。 記事を取りこはすような事故の典型的な例はファイルシ ステム・フルですが、この種の事故は数寸・分から運が悪け れば翌日に管理者が出勤して事態に気づくまて読きます。 したがって、取りこは、し記事を冗長な ihave の送信で 自動再送しようとするなら、トラブルから回復したころを 狙わなければなりません。 たとえは則述のようにしておき、 sendbatches wazuka . wehave を 1 日に 1 回だけおこなえばいいのでしようか ? たとえば毎日 0 時におこなうとしましよう。これでは 0 時 1 分に着いた記事の Message-JD を含んだ ihave は、 24 時間遅れになりますが、 23 時 59 分に着いた記事の Message-ID を含んだ ihave は、はとんど即座に送られ てしまいます。 対策は、たとえば sys に以下のように書きます。 トラプノレシュート Cnews のインストールや運営でよくみられるトラブ ルとその対処について説明します。ます大事なことは、 NEWSCTL の errlog や 10g を見ることです。 send- batches に関連した不具合の場合は、 batchlog も調べま しよう。 spacefor の Cnews はディスク領域の残量を調べて、溢れそうなら 重川乍を中止したり受け取った記事を捨てたりします。ディ スク容量は各サイトによってまちまちですから、 NEWS- BIN/spacefor をカスタマイズする必喫があります。 ニュースシステムが全然動いていないように見えると きに、 sys や batchparms の設定を確認するだけではな く、しつは spacefor の成疋のためにニュースシステムが ディスク残量の不足だと勘違いをしていないか疑ってくだ 62 UNIX MAGAZINE 1992.8

3. UNIX MAGAZINE 1992年8月号

連載 ZU NIX Communcation N0tes NE 、 VSCTL/sys の 2 行 リスト 1 . vehave/wazuka: ニュースグループリスト , ! t0 / a11 , ! 10Ca1 : 工 wazuka : tO . wazuka/all : f wazuka リスト 2 batchparms 40000 20 wazuka . wehave 40000 20 wazuka . S endme wa7uka . ihave 40000 20 20 wazuka 40000 batchih nocomp vxamews bat chra nocomp VIanowhere bat chsm nocomp VIaIneWS bat cher compcun VIauux batchih と同しく、 muncher に nocomp 舸もしな これで、次に sendbatches カ力いたときに、請求され い ) を、 sender に viainews を指定することで sendme た記事が wazuka に送られます。 コントロール・メッセージを投稿します。 まとめ sendme コントロール・メッセージの送イ wazuka と nadia が相互に ihave/sendme をおこ ihave コントロール・メッセージのときと考え方は同 なうには、 NEWSCTL/sys に 2 行、 batchparms に じで、 to. nadia というニュースグループに投稿された 4 行の設定が必要です。つまり、 nadia 側の設定では、 コントロール・メッセージが nadia に送られるように NEWSCTL/sys には、 Message-ID を溜めるために 1 NEWSCTL/sys と NEWSCTL/batchparms を設定 行、記事 ( コントロール・メッセージも ) を送るために 1 します。 行が必要です ( リスト 1 ) 。 batchparms には、 ihave の生成、受信した sendme sendme コントロール・メッセージの言 の処理、受信した ihave の処理、実際の記事の送信のため こからは、再び nadia 側での設定です。これも ihave に各 1 行が必要です ( リスト 2 ) 。ただし、最後の行の設 と同しく、 NEWSCTL/sys の ME の行に to を書い 定は /defaults/ の設定と同じなら省略できます。 ておくことと、ディレクトリ NEWSARTS/out. going それから、 NEWSARTS/out. going の下に 4 つの /wazuka. sendme を作っておくだけで OK です。 ディレクトリ、 wazuka5 、 wazuka. wehave 、 wazuka. i- sendme コントロール・メッセージを受け取ると、 re- have 、 wazuka. sendme を作る必要があります。 laynews は、コントロール・メッセージのファイル名を NEWSARTS/out. going/wazuka. sendme/togo に書 ihave/sendme の応用設定 き込みます。 ニュースグループなどによって、 ihave/sendme の適 sendme コントロール・メッセージの里 用を切り替えることもできます。 これもまた sendbatches でおこないます。そのために たとえは、 naniwa て始まるニュースグルーフ第羊だけは NEWSCTL/batchparms には、 nadia → wazuka が主イ合源であり、 ihave を送る必要 がないとしましよう。そのためには、 NEWSCTL/sys に nadia. sendme 40000 20 batchra nocomp vianowhere 次のように設定します。 と設定します。 wazuka: naniwa, tO. wazuka/all , ! 10Ca1 : f batchra はコントロール・メッセージのファイル名 wazuka. wehave/wazuka : a11 , ! 10Ca1 , ! naniwa を標準入力から受け取り、その本文の Message-ID リ ! to / a11 , !local:l ストを history と照らし合わせて記事のファイル名 (NEWSARTS からの相対パス ) に変換します。そして あるいは、次のようにしてもかまいません。 それを、 NEWSARTS/out. going/wazuka/togo に書 き込みます。 5 これは ihave/sendme をおこなわなくても必喫です。 61 UNIX MAGAZINE 1992.8

4. UNIX MAGAZINE 1992年8月号

連載 /IJNIX Communication N0tes リスト 3 shiftihave # ! /bin/sh # shift ihave PATH=$NEWSCTL/bin: $NEWSBIN : $NEWSPATH ${NEWSCONFIG—/usr/1ib/news/bin/config} # = ( ) く . $NEWSCONFIG-@く NEWSCONFIG>@> ( ) = e xport PATH umask $NEWSUMASK 110Ck = trap "rm —f $ 110Ck for sys do exit 0 " 0 1 2 15 # Move into his directory llock="$ltemp $lock" then if newslock $ltemp $lock echo $ $ >$ltemp llock="$ltemp 1temp="L. $ 10ck="LOCKbatch" # lock agaxnst batcher for this site continue cd $NEWSARTS/out ・ going/$sys . wehave Ⅱ \ else # didn't get the lock rm —f $ltemp # this site ・ is busy contlnue # try the next site fi if f i [ —s ihave . 0 ] then cat ihave. 0 > > togo cp /dev/null ihave. 0 —s ihave . 1 ] & & mv —s ihave . 2 ] & & mv [ -s ihave . 3 ] & & mv [ -s ihave . 4 ] & & mv rm —f $ltemp $lock # unlock this site ihave . 1 ihave . 2 ihave . 3 ihave . 4 ihave ihave ihave ihave . 0 . 1 . 2 . 3 spacefor はシェル・スクリプトで、真ん中あたりの case UNIX MAGAZINE 1992.8 空き i-node 数を決めています。名前と対応する乍は次 文で各重川ごとに、ファイルシステム、空きプロック数、 のとおりです。 ・ mcommg 受信した記事の耳対の決定。 ・ articles 受信してⅲ . coming に溜まった記事を処理するかどう かの基售。 ・ control NEWSCTL の上で大きなファイルを操作する場合に 使用たとえば、 addmissing は history のコピーを 作る余裕があるかを評ヾます。 ・ outbound 記事を他システムへ送信できるかを判断。 ・ archive 記事のアーカイビングをともなう expire を実行するか どうかを決定。 ファイル名、残量、残り i-node 数の設定を調べ、不都 合があれは変更します。とくに archive のところは実質的 には無効な設定力丿期値にあるので、変更か必要です。 outbound は sendbatches が動作時に使用しま す。 spacefor のデフォルトでは、ファイルシステムが /usr/spool/uucp で、必要なディスク残量は IOMB と なっています。このため、 /usr/spool/uucp のディス ク残量が IOMB を下回ると、バッチの送信だけでなく、 ihave/sendme の処理など sendbatches を介したすべて の重川乍がおこなわれなくなります。 outbound の残量不足は、 NEWSCTL/batchlog を 見れは分かります。 一方 incoming の設疋が過大だと、ディスクの余裕が あるのに受け取った記事バッチを捨ててしまいます。ただ し、それにさきだって以下のようなメールをシステム管理 者に送ってきます。 From : news Apparent1y—To : usenet lncoming news wiII be discarded due to space shortage unless more room becomes available within 15 min . 63

5. UNIX MAGAZINE 1992年8月号

連載 /UNIX Communication Notes—O sys のすべてのエントリの第 2 フィールドを調べ、 a11 が 使われていたら !to,to. system か、 !to を付け加えなけ ればなりません。 ihave コントロール・メッセージの発生 sendbatches を通しておこないます。すでに説明した ように、溜まった Message-ID リストを適当な大きさに 分割して投稿するのですが、そのためには NEWSCTL/ batchparms4 に以下のように書きます。 wazuka. wehave 40000 20 batchih nocomp viamews 40000 と 20 は適当に変えてかまいません。 send- batches は Message-ID リストを指定されたサイズに 分割し、 builder ( この場合は batchih) に渡します。 batchih は、与えられる Message-ID リストの先頭に必 Subject : ihave nadia Newsgroups : t0 . wazuka. ctl Contr01 : ihave nadia 要なヘッダと空行、 これで sendbatches を起動すれば、 ihave コントロー ど ) が to. wazuka に投稿されるはすがないからです。 wazuka に送る意、がない記事 (Distribution: local な と記述します。 Distribution が all になっているのは wazuka : tO . wazuka/all : f : は、 wazuka に送ればよいのですから、 NEWSCTL/sys に to. wazuka に投稿されるコントロール・メッセージを ihave コントロール・メッセージの送イ言 われます。 るだけで、処理は次に newsrun カ可川する時点でおこな 才高した記事は NEWSARTRS/in. coming に置かれ ainews を指定します。 muncher に nocomp ( 何もしない ) を、 sender に vi- を入れます。あとはこれを inews に渡すだけですから、 60 なさい。 4 前回までに、イ可箇戸励、で誤って batchparams としています。ごめん ル・メッセージが wazuka に送られます。 NNTP など sendbatches 以外の手段で記事を送って いる場合には、 sys の第 3 フィールドを f ではなく F と する必要があるかもしれません。 ihave コントロール・メッセージの言 こからは wazuka 側の設定です。 ます to. wazuka 宛の記事を受け取るのですから NEWSCTL/sys の ME ( あるいは wazuka) に関する 工ントリの第 2 フィールドに to か all か書かれていなけ ればなりません。 NEWSCTL/active に to. wazuka がなくても大丈夫 ですが、 sys に登録がないと、 Jun 17 22 : 09 : 53.667 nadia ーく 168@nadia . cs . naniwa —u. ac. JP> Ⅱ 0 subscribed groups 1n 'tO. wazuka. ct1' UNIX MAGAZINE 1992.8 ない記事の Message-ID リストを出力します。 ジの内容を取り出して history と照らし合わせ、もってい 力します。引き続いて、各 ihave コントロール・メッセー という sendme コントロール・メッセージのヘッダを出 Subj ect : sendme wazuka Newsgroups : to. nadia. ctl CO tr01 : sendme wazuka batchsm に与えます。 batchsm はまず、 イル名リストが入っていることにはまったく関知せす、 sendbatches は、 out. going/nadia. ihave/togo にファ と書きます。 40000 と 20 は適当に変えてかまいません。 nadia. ihave 40000 20 batchsm nocomp vialnews NEWSCTL/batchparms に sendbatches を介しておこないます。 sendme コントロール・メッセージの発生 せん。 のディレクトリをあらかじめ作成しておかなければなりま out. going/nadia. ihave に書き込みます。そのため、 セージを受け取ると、そのファイル名を NEWSARTS/ relaynews は nadia からの ihave コントロール・メッ られます。 というエラーが NE 、 VSCTL/log に残り、記事は捨て

6. UNIX MAGAZINE 1992年8月号

連載 ZUN Ⅸ Communication Notes—⑩ Cnews は、 Control: フィールドの内容をそのままコマ ンドとして実行します。コントロール・コマンドは、たん に引数を評価すればいいわけです。 記事の内容が未をもっコントロール・メッセージもあ るので、コマンドの標準入力に記事か渡されます。 たとえは、 Contr01 : newgroup nanxwa. foods というコントロール・メッセージが /usr/spool/news/ C0ntr0V1234 にオ褓内されたとすると、 安じ、してください。 relaynews は、 Control: フィール でしようか ? などというコントロール・メッセージか届いたらどうなる Contr01 : づいたと思います。実際、 毎気な読者は、セキュリティ・ホールとなる可能性に気 か実行されます。 /usr/sp001/news/contr01/1234 /usr/lib/newsbin/ctl/newgroup naniwa. foods く \ ドの内容にく、 > 、 \ などのシェ ルのメタキャラクタが含まれている場合、コントロール・ コマンドは実行しないで、 relaynews : control * ' 100kS unsafe tO execute というようなエラーメッセージを NEWSCTL/errlog に 残します。副作用として、 cancel などの Message-ID を 引数としてもつコントロール・メッセージか夫行できない (Message-ID は、くて始まり > で終る ) という欠点が生し ています。 将来は、ライプラリ関数 system を利用せずに、直接コ ントロール・コマンドを f 。 rk / exec するように変更され るかもしれませんね。 すでに説明したように、 NEWSBIN/ctI/sendsys と version は日時と記事の Message-ID を NEWSCTL/ delayed に書き込むだけのシェル・スクリプトです。実 際に処理をおこなうプログラムは、 NEWSBIN/relay/ に置かれており delsendsys と delversion という名前に 58 なっています。 Cnews では、 Message-ID をキーに NEWSCTL/ history を検索するプログラムなどが完備されています。 これらを組み合わせることで、シェル・スクリプトから容 易にニュースシステムを操作できます。 コントロール・コマンドが、もし 0 でない終了ステータ スを返せば、 relaynews はシステム管理者に以下のような 報告のメールを送ります。 From news Wed Jun 17 10 : 59 : 49 1992 Received: by nadia. cs . naniwa-u. ac ・ jp ( 4.1 / 6 .4J . 6 ) id AA28227 ; Wed, 17 Jun 92 10 : 59 : 48 JST Date: Wed, 17 Jun 92 10 : 59 : 48 JST From : Message—Id: く 9206170159. AA28227 @nadia. cs . naniwa -u ・ ac ・ JP> Re1aynews : control message 'PATH=/usr/1ib/news/ bin:/usr/lib/newsbin/ctl ; rm xx く control / 419 ' e xited with status 0400 Apparent1y—T0 : usenet ihave/sendme 則回は、 ihave/sendme コントロール・メッセージ についての一般論しか説明できませんでしたが、新しい Cnews が入手できたので Cnews での ihave/sendme の 設定 / 運営方法を解説します。 簡単に ihave/sendme プロトコルの手順の復習をしま しよう。 nadia と wazuka のあいだで ihave/sendme を おこなうものとします。 1. (nadia) Message-ID のリストを作る。 コントロール・コマンドを改造、あるいは自作するとき に忘れてならないのは、 relaynews によって一 ーユースシス テムがロックされている状態て呼び出されることです。そ のなかでニュースシステムをロックすると、いつまで経っ てもロックできないのでニュースシステムがハングアッフ してしまいます。 それから、コントロール・コマンドが実行されると き、標準出力は NEWSCTL/Iog に、標準ェラー出力は NEWSCTL/errlog にリダイレクトされています。そし て、カレントディレクトリは NEWSARTS になってい ます。 UNIX MAGAZINE 1992.8

7. UNIX MAGAZINE 1992年8月号

連載 UNIX Communication Notes 齊藤明紀 Cnews(5) Cnews も第 5 回になりました。そして、 UNIX Com- munication Notes もついに連載 50 回目を迎え、 5 年目 に入っています。 今月は、 Cnews の新しいバージョンにもとづいて ihave/sendme プロトコルの利用のための設定について、 それから Cnews におけるコントロール・メッセージ処理 の実装について解説します。 Cnews 02- ay -1992 まず、新しい Cnews について説明します。リリースさ れた日をとって 02 ー May -1992 バージョンなどと呼ばれ るものです。 Cnews は現在、、 cleanup release" という、 いわはきれいに書き直した決定版作成の過程にあるそう です。 02 ー May ー 1992 バージョンはそこへの道半ばといっ た状態のもので、ソースコードは直前のバージョン ( 22- Dec ー 1991 ) とくらべて大幅に変更されています。このた め、パッチ ( 差分 ) は提供されていません。また、 cleanup release についても、大幅に書き直されているはすなので 差分リリースは提供しないと言明されています。 こで説明するのは、 02 ー May -1992 バージョンに 以前と同様の日本語化を施し、オリジナルに存在するい くっかのバグを修正したもの [ 1 ] です。 Cnews-9205- JP. tar. Z というファイル名のものを anonymous ftp で 入手しました 1 今回のバージョンアップの特徴は、数多くの隣接サイ トに記事を提供しているような大規模サイトのための処 理効率の向上と、新たに実装しなおした ihave/sendme 機能です。 README には、、以前の Cnews でとくに不 UNIX MAGAZINE 1992.8 1 WEnet にも置いてあります。 満がないならば、 このバージョンをインストールせすに cleanup release を待ってもよい " と書いてありますが、 (cleanup release はいつ出るか分からないので ) ここて は 02 ー May ー 1992 バージョンを採用することにします。 さてソースコードは大幅に変わりましたが、管理手法は ihave/sendme を除けばそれほど変わっていません。則 回までの説明がはば当てはまります。 とくに大きく変わった点について説明します。 ・ inews か書き直された README には、、℃プログラムを使って大幅に書き 換えた " と書かれていますが、相変わらすシェル・スク リプトがシェル・スクリプトを呼」冓造です。以前にく らべて処理がかなり高速になっていますが、書かれてい るように 10 倍速くなったとは感しませんでした。 速くなったのは inews カ院了する時間で、投稿した記 事の処理がおこなわれるまでの時間はむしろ長くなって います。 inews は、記事を NEWSARTS/in. coming に↑褓内するだけで終了してしまうからです。ーヨ殳ューサ ーか起動する inews がさらに relaynews を起動するこ とには、 setuid そのほかの間題がともなうため、遅れ が生しるのは承知のうえでこのようにしたそうです。 ・ SRC/doc に置かれたドキュメントは、これまでは項目 ごと ( ンヾラバラでしたが、長い 1 つの文書としてまとめ られました。また、目次と索引も作成されます。 付属の makefile は groff2 を前提に記述されています。 troff や ditroff, nroff を使う場合には変史が必要です。 たとえは ditroff を使う場合には、 2 GNU 版 roffo roff 形式のソースを受け付け、 ps ファイルを標鷦甲山 に出力する。 55

8. UNIX MAGAZINE 1992年8月号

連載 /UNIX Communication Notes リスト 4 newsrun の改造 * * * 161 , 163 * * * * 161 , 167 /usr/lib/newsbin/input/newsrun Thu Jun 18 17 : 26 : 53 1992 * * * newsrun Sun May 3 09 : 07 : 10 1992 done done sleep 45 f i if ls else f i ー egrep sleep 45 break ; ー S # give somebody else a shOt at the IOCk *$pat " > /dev/null ; then # give somebody else a sh0t at the IOCk システム名と UUCP ノード名 対策としては、 kyouk03 の管理者に依頼して、 クトリがないのでエラーとなります。 NEWSCTL/out. going/kyouko. sendme というディレ となってしまいます。これを nadia で受け取ると、 ControI : Sendme kyouko ではなく、 Contr01 : Sendme kyouk03 ントロール・メッセージを送る場合には、 SystemV R2 の kyouk03 というシステムが sendme コ られることがあります。たとえは、 Bnews カ力いている このとき、ホスト名が 6 文字ないし 7 文字に切り詰め 用します。 はシステムの uucp ノード名 (uuname ー 1 の出力 ) を使 名を使用しますが Bnews の sendbatch はデフォルトで ihave/sendme のときに、 Cnews はニュースシステム sendbatch ではなく、 sendbatch ー 1 nadia —ikyouk03 nadia を使ってもらいます。 64 あるいは、 NEWSCTL/out. going/kyouko. sendme というディレクトリを nadia 側で用意し、 NEWSCTL/ sys の設定で、 kyouk03 : , tO . kyouko , t0 . kyouk03 : f としてもいいでしよう。 もう 1 つ方法があります。 Cnews 付属の batchra は、環境変数 NEWSS 工 TE の内容 kyouko. sendme を 処理して、 kyouko という名前を得るようになっていま す。これを NEWSSITE を見ないで kyouk03 とするよう に変更して、 kyouko. sendme/batchra として置いてお きます。そうすると、 kyouko. sendme に関しては ky- ouko/sendme/batchra か優先して使われるので、記事 ファイル名リストは kyouk03/togo に正しく格納され ます。 ホスト名の切詰めによるトラブルは、 ihave コントロー ル・メッセージに関しても起こります。これは sendme の場合と同じアイデアて埆夬できます。 ロックアップ 今度の newsrun は、 NEWSARTS/in. coming に溜 まった入力を処理し終えたあと、 45 秒停止するようになっ ています (sIeep45 となっている ) 。これを知らないと、 rnews や nntpd がロックしたと早してしまいます。 UNIX MAGAZINE 1992.8

9. UNIX MAGAZINE 1992年8月号

連載 ,/UNIX Communication N0tes¯⑩ doexplode は newsrun か起動するので、とくに管理 の手間は変わりませんし追加設定も不要です。 このバージョンの newsrun と doexplode のキ冓造では、 explode が実行中は relaynews は動きません。 explode と relaynews が並行して動作できるようにすれば、さら に処理効率が一ヒがるでしよう。 コントロール・メッセージ ~ 里 sendsys と version コントロール・メッセージは、到着 した時点では処理されません。システム管理者にメールで 通知したうえで、到着したことを NEWSCTL/delayed に記録します。実際の処理は、あとで NEWSBIN/relay /dodelayed がおこないます。通常、 1 日に 1 回実行さ れるはすの NEWSBIN/maint/newsdaily から dode- layed か呼び出されているので、前述のように到着から処 理まて最大 24 時間遅れるわけです。 この遅れを小さくしたければ、 cron からもっと頻繁に dodelayed を起動すればよいでしよう。逆に自動的に反 応してはしくなけれは、 newsdaily から dodelayed を起 動する部分を取り除き、手動で dodelayed を起動するこ ともできます。 ihave/sendme コントロール・メッセージも処理に手 間がかかるものの 1 つです。これもやはり、 relaynews は到着を言求だけして、内容の解釈 / 処理は sendbatches からおこなうようになりました。 インストールの注意 以則のバージョンの cnews のコマンド類は 1 度消し て、再度フルインストールしたはうが安全です。 NEWSARTS/out. master の mkdir などの作業も あるので、ひととおり、 build 、 doit. root 、 doit. bin 、 doit. news 、 again. root を実行しなくてはいけないの と、たんにインストールするだけでは、 NEWSBIN/ctl /senduuname など今回のバージョンでなくなったファ イルが残ってしまうからです。 NEWSBIN の下のファイルで改造したものがある場合 は、改造の内容を記録しておいて、インストールされた新 しいコマンドに、同様の改造を施します。追加したコマン ドは週壁しておき、 Cnews をインストールしたあと、も との場所に戻せばいいでしよう。 UNIX MAGAZINE 1992.8 コントロール・メッセージの実装 Cnews ではコントロール・メッセージは cancel 、 ihave 、 sendme を relaynews 自身が処理し、それ以外 は NEWSBIN/ctI に置かれたプログラムが処理するよ うになっています。そして、コマンド名はコントロール・ メッセージの名前と同一です。 relaynews は、コントロール・メッセージの有蛎生を判 断しません。ですから、新しく制定されたコントロール・メ ッセージに対応するためには、同名のコマンドを NEWS- BIN/ctl に置くだけでいいのです。 コントロール・メッセージ ある記事がコントロール・メッセージなのか判断する基 準は、 cnews では以下のいすれかです。 ・ Control: ヘッダをもつ。 ・ Newsgroups: の内容が 1 つだけであり、 終っている。 ・ Supersedes: ヘッダをもつ。 ・ Also-Control: ヘッダをもつ。 かっ . ctl " で Also-ControI は Bnews にはなかったものです。通 常のコントロール・メッセージは、属するニュースグル ープにかかわらす NEWSARTS/control に置かれます。 AIso-Control は通常の記事がコントロール・メッセージ も兼ねるもので、 Newsgroups: の内容に対応したディレ クトリに置かれます。 Cnews では、 Supersedes: は Also-Control: cancel に読み換えて処理されています。たとえば、 Supersedes : く 827569 取 adia. cs . naniwa¯u. ac ・ jp> は、 A1so—Contr01 : cancel く 82756@Ⅱ adia. cs . naniwa¯u. a にしましよう。 おこなうコマンドを、コントロール・コマンドと呼ぶこと こでは、コントロール・メッセージに対応する重川を コントローノレ・コマンド として処理されます。 c ・ jp> 57

10. UNIX MAGAZINE 1992年8月号

連載 UNIX Communication Notes make TROFF=ditroff ファイルができますが、内容は groff と違って ditroff とします。 guide. ps 、 index. ps 、 toc. ps という 3 つの 構成がすっきりとしました。 従来はさまざまな項目か混在していたのですが、これで ・ SRC/man/news. 5 が分割された とします 3 。 lpr ーⅡー P れ te toc. ps lpr —n ー Pp ロれ ter ・ index. ps lpr ーⅡー P 〃ロれ、 guide . ps 形式の出力です。プリントアウトするには、 56 3 もちろん、 ditroff の出力のための printcap の言定が必要です。 なっています。 ますが、 newsrun の起動頻度が 1 時間に 4 回と多く ・ cron の設定のサンプルが SRC/conf/cron に生成され りました。 ・ newswatch が、ディスク容量の不足も見張るようにな BIN/ctl/senduuname を消す必要があります。 くなりました。ただし、以前のバージョンの NEWS- ・ senduuname コントロール・メッセージに応答しな またシステム管理者への報告も充実しました。 処理する前に expire されてしまう危険性があります。 メッセージの expire を急速におこなうシステムでは、 24 時間遅れておこなわれます。このためコントロール・ ・急を要しないコントロール・メッセージの処理が最大で これで通常のシステム稼重加にも使えるようになりまし 長時間ロックするので使えるのは非常時だけでしたが、 するように改良されました。従来はニュースシステムを ・ addmissing が必要最小限ニュースシステムをロック BIN/expire/expireflow か提供されています。 てきた時点で expire をおこなうための NEWS- ・毎日の定時ではなく、スプールの残量が少なくなっ muncher 名です。 わりました。 12bit compress は comp12 という ・ノヾッチの圧系宿のデフォルトが 16bit compress に変 ・ ihave/sendme の設定が簡単になり、処理が高速化さ relaynews の変更 さきに書いたように relaynews は大規模システムで のスルーブット向上を目引長に変更か加えられています。簡 単にいうと、、、・代替できないものだけを relaynews がお こなう。そうでない機能は外に出す " という方針にもとづ いたものです。すなわち、 relaynews と周辺のプログラム 群の彳齬 IJ 分担が見なおされ、変史されています。 マスター・′ヾッチファイノレ 従来の relaynews は、 NEWSARTS/out. going/ sysname/togo に、記事のファイル名や Message-ID な どを書き込んでいきます。記事を交換しているシステム数 か、その 2 倍 (ihave/sendme をおこなう場合 ) の個数 のファイルへの書込みがおこなわれなければなりません。 従来の relaynews は、高速化のため複数の togo フ ァイルを open したままにしていました。この手法は、 1 プロセスあたりのオープンファイル数の制限のために 大規模サイトでは十分に効果を発揮しません。そこで、 relaynews は各 NEWSARTS/out. going/sysname/ togo へ書き込む情報を NEWSARTS/out. master/ の 下にファイルを 1 つだけ作ってここにまとめて書き込みま す。これを、、 master batch files" と呼んでいます。マス ター・バッチファイルを処理するのが NEWSBIN / relay /explode です。通常、 explode は doexplode を通して 起動さオ L 、 out. master/togo の内容を各 togo ファイル に振り分けます。 たとえば、以下の内容を explode にケえたとします。 く 827569uunet . uu. net> news/admin/12435 2097 F out . going/sitel/togo f /usr/spool/news/out ・ going/site2/togo n out . nntp/site3 I out ・ going/site4. wehave/togo すると、 explode は下線の行を追加します。 ・ NEWSARTS/out. going/sitel/togo に、 news/admin/12435 /usr/spool/news/out. going/site2/togo に news/admin/12435 2097 ・ NEWSARTS/out. nntp/site3 に news/admin/12435 く 82756@uunet . uu. net> ・ NEWSARTS/out. going/site4. wehave/togo に く 827569uu れ et . uu . net> UNIX MAGAZINE 1992.8