TERM HOWTO Patrick Reijnen patrickr@bart.nl 藤井真吾 - 日本語訳 sfujii@super.win.or.jp JCC04050@niftyserve.or.jp v1.2, 15 July 1995  この HOWTO は、シリアルラインを多重化しネットワーク接続を可能にする Michael O'Reilly の優れたソフトウェア、TERM を使うことによる混乱をいく らかでも緩和するためのものです。どの点からみても、TERM に付属する文書は 大変良いもので、この HOWTO はそれらに代わるものではありません。この文書 の目的は、TERM がどのように動いているのかという背景や、いくつかのさらな る一般的なネットワークサービスを TERM のもとで動かす手順を提供すること です。この文書は TERM を知るための全てをカバーしていないことを指摘して おかねばなりません。これを読んだあと、TERM のマニュアルページで、ここに 含まれていない情報を読んで下さい。 Note: この文書はかなり以前に書かれたものなので、いまどきの Linux 環 境にはあてはまらない箇所があります。 (JF Project) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Table of Contents 1. 法的条件 1.1. 著作権について 1.2. 宣言 2. イントロダクション 2.1. この文書 2.2. TERM とは何か? 3. TERM はどのように動くのか 3.1. 用語の定義など 4. セットアップ 4.1. 何が必要か 4.2. 概念の説明 4.3. TERM の構築 4.4. client.a, libtermnet.a, libtermnet.sa, libtermnet.so 4.5. 環境変数の設定 4.6. TERM のテスト 4.7. TERM とコミュニケーションプログラム 4.8. 透過的なリンクを作る 4.9. linecheck を実行する 4.10. TERM を実行してみる 4.11. TERM を終了する 4.12. パーティションから TERM を削除する 4.13. コネクションを最適化する 4.14. トラブルシューティング 5. TERM クライアント 6. X と TERM 7. tredir 7.1. tredir can bite! 7.2. Stupid tredir tricks 8. tudpredir 9. 作業の自動化 10. ソフトを TERM とともに使えるようにする 10.1. ソースの移植とコンパイル 10.2. Termify 11. Term クライアント 11.1. ftp サイトから入手可能な Term クライアント 11.2. termnet パッケージ 11.3. 望まれてはいるがまだサポートされていないもの 12. Term とセキュリティ 12.1. trsh 12.2. txconn と xauth 12.3. sxpc, xhost と xauth 13. 覚えておくこと 14. TERM のバージョンと信頼性 15. Term スピード表 16. ネット上で見つかるヒントとトリック 17. その他のこと 18. 謝辞 1. 法的条件 1.1. 著作権について  この文書は、あらゆる形式で無料で配布することができます。この文章の一 部だけを配布することもできますが、著作権表示が含まれていることと、完全 な HOWTO 文書ではないことを読者に分かるようにして下さい。また、完全な文 書がどこで手に入るかを示すべきでしょう。特に、商用の配布についても事前 の承諾なしに可能ですが、そのような利用に関しては私にお知らせ下さい。  この HOWTO は、著作権表示と、「宣言」がそのまま残されている限りどのよ うな言語にも翻訳して結構です。また、誰が翻訳したのかを明確にして下さい 。 This document may be distributed freely as a whole in any form and free of charge. Parts of this document may be distributed, provided that this copyright message is included and the reader is informed that this is not the full HOWTO document. Furthermore, there is to be a pointer as to where the full document can be obtained. Specifically, it may be included in commercial distributions, without prior consent. However, I would like to be informed of such usage. This HOWTO may be translated into any language, whatsoever, provided that you leave this copyright statement and the disclaimer intact, and that a notice is appended stating who translated the document. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2. 宣言  私は、最大限に正しくそして新しい情報を入れましたが、この文書に含まれ る情報がデータの喪失を招かないとは保証できません。この HOWTO に含まれる 情報に関しては「無保証」です。また、私はこの HOWTO に含まれる情報を利用 することによって生じたあらゆる損害について責任を持ちません。 While I have tried to include the most correct and up-to-date information available, I cannot guarantee that usage of the information in this document does not result in loss of data. I provide NO WARRANTY about the information in this HOWTO and I cannot be made liable for any consequences for any damage resulting from using information in this HOWTO. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2. イントロダクション 2.1. この文書  この HOWTO は、シリアルラインを多重化しネットワーク接続を可能にする Michael O'Reilly の優れたソフトウェア、TERM を使うことによる混乱をいく らかでも緩和するためのものです。どの点からみても、TERM に付属する文書は 大変良いもので、この HOWTO はそれらに代わるものではありません。この文書 の目的は、TERM がどのように動いているのかという背景や、いくつかのさらな る一般的なネットワークサービスを TERM のもとで動かす手順を提供すること です。この文書は TERM を知るための全てをカバーしていないことを指摘して おかねばなりません。これを読んだあと、TERM のマニュアルページで、ここに 含まれていない情報を読んで下さい。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.2. TERM とは何か?  TERM は Michael O'Reilly (michael@iinet.com.au) によって書かれ、Bill Riemers (bcr@physics.purdue.edu) によってメンテナンスされており、シリア ルライン上で同時に複数のコネクションを張ることを可能にします。=例えば 、モデムでデータをダウンロードしている時に、同じモデムコネクション上で (また別の)リモートシステムを使って作業することが可能です。TERM はまた、 シリアル接続上で X クライアントを開くために使うこともできます。tredir ユーティリティと tudpredir ユーティリティで TERM はほとんど全ての「古典 的」TCP/IP と UDP のネットワークサービスを提供することができます:メー ル、ニュース、ftp 、telnet 、xarchie などなど。ある意味で、TERM は SLIP や PPP のような他のシリアルプロトコルに大変よく似ています。TERM の利点 は、それが完全にユーザレベルでできることで、システム管理者やネットワー ク管理者の手を借りる必要がないことです。  SLIP や PPP と違って、あなたのマシンは独自の IP アドレスを持ちません 。入って来るトラフィックは全てリモートホストに向けられ、TERM によってそ れらがあなたのローカルコンピュータにリダイレクトされてきます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3. TERM はどのように動くのか  TERM を試す前に、この章全てと、パッケージとともに提供される INSTALLATION ファイルを最初に読むことを強くおすすめします。さらに、TERM と (term)test についてのマニュアルページにも目を通して下さい。きっと簡 単に、素早く作業をすることができるでしょう。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.1. 用語の定義など  あなたが何らかのターミナルサーバを通してシステムにダイアルすることを 仮定します。私はここでローカルとリモートという言葉をそれぞれ自宅と、ネ ットワークにつながったシステムの意味で使います(何か別の意味で使わない限 りは :-)。  TERM は、ネットワーク接続されていないけれどもシリアルラインを通してネ ットワーク接続されたマシンにつながっているローカルマシンに、ネットワー クサービスを提供します。ネットワークサービスを要求する、ftp や telnet のようなプログラムをどのように起動するか見てみましょう。これらのプログ ラムは、ネットワークサービスを要求するシステムコールを発行します。オペ レーティングシステムは、これらのサービスをネットワークインターフェース を通じて行います(例えば、イーサネットを通じてパケットを送ったり受けたり する)。SLIP や PPP は、モデムラインをネットワークインターフェースにする ことによってこれを行い、これはイーサネットによるものと原理的に変わりま せん。つまり、これらのプロトコルが、他のマシン同様にモデムによってつな がったマシンをネットワークの一部分にするということです。このことは、ネ ットワークのノードとなることによるすべての管理の負担がかかるということ です(さらに言うなら、モデムも管理の対象とせねばなりません)。  SLIP や PPP のようなネットワークコネクションがないとき、一般的にはど うしたらいいでしょう?ネットワークに繋がったマシンにダイアルして、メー ルやニュースを読みましょうか。もしファイルが必要になったら、まず kermit やその他のコミュニケーションプログラムを使って、最初にリモートマシンに 送ったりまたローカルマシンにダウンロードすることになります。これはちょ っと面倒です。それは特に、モデムリンクを使う作業が同時にたった一つしか できないことによっています。TERM のアイデアは基本的にはこのプロセスを自 動化し、多重化することです。TERM はローカルとリモートの両方で起動され、 モデムラインを通じて二つのプロセスが互いに通信します。ネットワークサー ビスが必要になったら、ローカルの TERM デーモンに要求を出すと、それはネ ットワークにつながったリモートのマシン上の TERM デーモンに転送されます 。結果はモデムラインを通じて返ってきます。  具体的にするために、あなたが ftp でファイルを取得したいとしましょう。 まず、あなたは TERM と会話できる ftp のバージョンが必要になります。あな たはこの termftp を普通の ftp のように、'termftp nethost.gov' のように 起動します。しかしこの特別なバージョンはそのネットワークリクエストをカ ーネルの代わりにローカルの TERM デーモンに出します。ローカルの TERM デ ーモンはモデムラインを通じてリモートの TERM にこのリクエストを転送し、 リモートの TERM は nethost.gov への ftp コネクションを張ります。そして データをモデムリンクを通じて送り返すのです。TERM は同時に異なる多数の作 業を進行させるのに十分な性能を持っています。そのためあなたは同じモデム リンクを使っていくつもの異なるネットワークセッションを張ることができる のです。例えば、termftp で転送を行っている最中に termtelnet を使って離 れた別のホストにログインしている、といった具合です。  これが抽象的に過ぎたとしても(よくわからなくても)気にしないでください 。このセクションを抜けるための重要な部分は、モデムの両端で二つの TERM が走っているということなのです。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4. セットアップ 4.1. 何が必要か  TERM を構築して使い始める前に、カーネルに TCP/IP のサポートを組み込ん であることを確認しましょう。さらに、ループバックインターフェースも使え るようになっていることも確認してください。そうしたら、このセクションの 残りに進むことができます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2. 概念の説明  新しい TERM のバージョンでは新しい二つの概念が TERM に導入されました 。これら二つの概念については、次の二つのサブセクションで解説します。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2.1. 共有  バージョン 1.16 から他のユーザと TERM コネクションを共有するという概 念が導入されました。これは、共有の機能を導入すると、あなたが使っている ものと同じ TERM コネクションを他の人たちも使えるようになることを意味し ます。すなわち、あなたが TERM コネクションを通じてリモートマシン上で作 業中(ローカルマシンから trsh で入っていたとしましょう)、ローカルマシン にいるもう一人の人が、同じ TERM コネクションを使って同時に世界のどこか の ftp サイトからファイルを彼のもとに ftp してくることができるのです。  この機能を切っておく(つまり、TERM をプライベートモードで起動する)と、 あなたと、そしてあなただけ(われわれは root をカウントに入れません :-) が TERM コネクションを利用できます。  もちろん、あなたの使っているのと同じ TERM コネクションを他の人たちに 利用させたい側だけに共有 TERM をインストールしたいと思うでしょう。その ため、もし他の人たちがあなたのローカルマシンにログインアカウントをもっ ていて、それをリモートネットワークのどこかから使いたいというような場合 、あなたはリモート側の TERM で共有機能を導入することになります。このよ うな方法をとると、これらすべての人たちがあなたのマシンに同じ TERM コネ クションを互いに、そしてあなたと共有してログインすることができます(注意 :最初の例では、TERM コネクションのローカル側で共有機能を導入しておく必 要があったのです。)  root としてインストールする際の注意:root として TERM をインストール する際には、最初に 'term' というメンバーのいないグループを /etc/group に以下のような行を追加して作っておく必要があります(コンパイルの前に)。 term::16:root  または、グループ ID 16 番がすでに使われてしまっていたら別の未使用のも のを使ってください。  コンパイルとインストールが終わったら TERM とそのクライアントを 'term' に SGID してください: chgrp term chmod g+s  さらに、TERM 対応の他のプログラムも 'term' に SGID しておかねばなり ません。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2.2. フル TERM ネットワーク  TERM バージョン 2.0.0 から、フル TERM ネットワークという記述が使われ るようになりました。外界とのコネクションが TERM コネクションだけしかな い場合、フル TERM ネットワークを使うことになり、あなたはフル TERM ネッ トワークを入れて TERM を構築するべきでしょう。このような場合、共有ディ レクトリに termnet というファイルが置かれます。これは TERM に外界とのコ ネクションが TERM を通じてしか行われないことを TERM に知らせるためのも のです。  TERM コネクションに加えて何らかのネットワークコネクションがある場合、 TERM 対応プログラムは最初にこのネットワークコネクションを通じて仕事を完 了しようとします。これに失敗すると、TERM が起動され TERM コネクションを 通じて仕事を完了しようとします。このことをもっと明確にするために、いま TERM 対応 telnet が使われた例を考えます。この telnet は TERM と共にでも 、そうでなくても動作します。 telnet localhost は接続のために TERM を使いません。しかし、 telnet zeus.cs.kun.nl は他のタイプのネットワークコネクションがない限り TERM を使います。  フル TERM ネットワークは嘘のホストネームを使うことを意味します。つま りリモートホストのものが使われるわけです。さらには、bind(0) が常にリモ ートホストで動作するようになります。本質的には、このことによって TERM が走っていても TERM を通さない多くのプログラムは利用できないことになり ます。残念ながら、 UDP プログラムやデーモンのほとんどは、この悪いトリッ クのため TERM のもとでは動作しません。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.3. TERM の構築  もしあなたがラッキーなら、これは make を起動するだけです。しかしおそ らくほとんどの場合、それ以上のことをする必要があるでしょう。新しいバー ジョンの新しい機能のために、TERM のバイナリを作る作業はちょっと複雑にな っています。バイナリを得るために二つの方法があります。  TERM を構築するためのこれらの方法をすべてカバーするためにこのセクショ ンは 3 つのパートに分かれます。 1. TERM の構築、バージョン 2.0.0 以上 2. TERM の構築、バージョン 1.16 から 1.19 まで 3. TERM の構築、バージョン 1.15 まで ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.3.1. TERM の構築、バージョン 2.0.0 以上  最初に、上の「フル TERM ネットワーク」についてのセクションを読んだか どうか確認してください。  TERM バージョン 2.0.0 かそれ以上では、TERM のバイナリとクライアントを 作るために多くの方法があります。これらのすべては root であっても一般ユ ーザであっても実行可能です。 1. フル TERM ネットワークを使わずにプライベートモードで TERM を構築す る 2. フル TERM ネットワークを使ってプライベートモードで TERM を構築する 3. フル TERM ネットワークを使わないで共有モードで TERM を構築する 4. フル TERM ネットワークを使って共有モードで TERM を構築する  これらのバージョンの TERM では、configure スクリプトを用いる新しいコ ンパイル方法が導入されました。configure は起動されると何のオペレーティ ングシステムに TERM をインストールしようとしているのか、ソースディレク トリは利用可能か、ランタイムオプションをつけるかどうかなどをチェックし ます。そこで見つけたことをもとにして、configure は TERM のパッケージに 含まれる Makefile.in を使って Makefile を作ります。  configure のオプションのうち重要な2つは --root と --user で、これは TERM のインストールが root として行われるのか、一般ユーザとして行われる のかを規定します。TERM のインストールには、あなたの望むように、他のオプ ションも指定できます(例えば標準的でない path)。 1. フル TERM ネットワークを使わずにプライベートモードで TERM を構築す る  この方法で TERM を構築するには、次のようなコマンドを実行する必要 があります (root としてか、一般ユーザとしてかの両方): ./configure --root または --user make install installman  これはバイナリを構築し、それらのバイナリとマニュアルページをイン ストールします。 2. フル TERM ネットワークを使ってプライベートモードで TERM を構築する  この方法で TERM を構築するには、次のようなコマンドを実行する必要 があります (root としてか、一般ユーザとしてかの両方): ./congfigure --root または -user make installnet installman  これはバイナリを構築し、それらのバイナリとマニュアルページをイン ストールします。 3. フル TERM ネットワークを使わないで共有モードで TERM を構築する  この方法で TERM を構築するには、次のようなコマンドを実行する必要 があります (root としてか、一般ユーザとしてかの両方): ./configure --root または --user make share installman  これはバイナリを構築し、それらのバイナリとマニュアルページをイン ストールします。 4. フル TERM ネットワークを使って共有モードで TERM を構築する  この方法で TERM を構築するには、次のようなコマンドを実行する必要 があります (root としてか、一般ユーザとしてかの両方): ./configure --root または --user make share installnet installman  これはバイナリを構築し、それらのバイナリとマニュアルページをイン ストールします。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.3.2. TERM の構築、バージョン 1.16 から 1.19 まで  これらのバージョンの TERM を構築するために、以下の方法の中から選ぶこ とができます。 1. 一般ユーザとして、プライベートモードで TERM を構築する 2. 一般ユーザとして、共有モードで TERM を構築する 3. root として、プライベートモードで TERM を構築する 4. root として、共有モードで TERM を構築する  いかに、TERM のコンパイルの時に共有機能を導入したり、切ったりする方法 について説明します。 1. あなたは一般ユーザで(root アクセスがなく)、他のユーザと TERM コネク ションを[共有したくない]とします。  TERM コネクションを他のユーザと共有したくないユーザは、TERM を構 築するために以下のようにします: make DO=install OS-type make installman  TERM の後、そのクライアントとマニュアルページが構築されインスト ールされます。  さらに、あなたは '$HOME/.term' というディレクトリを作る必要があり ます。これは、TERM が 'termrc' ファイルを探すためのディレクトリです 。 2. あなたは一般ユーザで(root アクセスがなく)、TERM コネクションを他の ユーザと[共有したい]とします。  TERM コネクションを共有したいユーザは、このようにします: make DO=installshare USERSHARE=$HOME/term OS-type make installman  TERM の後、そのクライアントとマニュアルページが構築されインスト ールされます。  さらに、パーミッション 'drwxrwxr-x' をもったディレクトリ '$HOME/ term'(デフォルト)が必要です。最低でも、このディレクトリの中に TERM がそのコネクションに使うソケット('tmp/private/socket=')が見つかるで しょう。 3. あなたは root で、他のユーザと TERM コネクションを[共有したくない ]とします。  TERM コネクションを共有可能にしたくない root は TERM を構築するた めに以下のようにします: make DO=install OS-type make installman  TERM の後、そのクライアントとマニュアルページが構築されインスト ールされます。  さらに、パーミッション 'drwxr-xr-x' をもったディレクトリ '/usr/ local/lib/term'(デフォルト)が必要です。最低でも、このディレクトリの 中に TERM がそのコネクションに使うソケット('tmp/private/socket=')が 見つかるでしょう。 4. あなたは root で、TERM コネクションを[共有したい]とします。  最初に、上の「共有」のセクションを読んだことを確認してください。  TERM コネクションを共有したい root は以下のようにします: make DO=installshare OS-type make installman  TERM の後、そのクライアントとマニュアルページが構築されインスト ールされます。  さらに、パーミッション 'drwxrwxr-x' をもち TERM グループに所有さ れたディレクトリ '/usr/local/lib/term'(デフォルト)が必要です。最低 でも、このディレクトリの中に TERM がそのコネクションに使うソケット ('tmp/private/socket=')が見つかるでしょう。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.3.3. TERM の構築、バージョン 1.15 まで  これらのバージョンの TERM の構築にはこのコマンド以外に必要ありません 。 make DO=install OS-type make installman  この後、TERM と、そのクライアントとマニュアルページがうまく構築され てインストールされ、使えるようになっているでしょう。  さらに、ディレクトリ '$HOME/term' を作ることが必要です。このディレク トリは、 TERM が termrc ファイルを探すために使います。  やらなくてはならないことは、Makefile 中のいくつかの PATH とコンパイラ フラグを変更することだけです。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.4. client.a, libtermnet.a, libtermnet.sa, libtermnet.so  TERM とともに、TERM クライアントのための関数群のライブラリが提供され ています。  バージョン 1.16 までは、このライブラリは client.a と呼ばれていました 。TERM のコンパイル時にこのライブラリも構築され、TERM クライアントのコ ンパイルの時に使われていました。また、別のディレクトリにはインストール されませんでした。  バージョン 1.16 からライブラリの名前が libtermnet.a に変わっています 。バージョン 1.19 まではこのライブラリは TERM ディレクトリに作られ、 TERM クライアントのコンパイルに利用されています。これは別のディレクトリ にはインストールされません。  バージョン 2.0.0 からは、libtermnet.a に加え libtermnet.so と libtermnet.sa (シェアドライブラリと exported initialized library)が TERM パッケージのコンパイルの際に作られるようになりました。パッケージの すべての部分のインストールの際に、これら3つのライブラリファイルもディ レクトリ '/usr/local/lib'(デフォルト)にインストールされます。その後、 libtermnet.so.2 から libtermnet.so.2.x.x にリンクが張られます。最後に、 ldconfig がファイル '/etc/ld.so.conf' に書かれたコマンドラインによって 特定されるもっとも新しいシェアドライブラリへの必要なリンクとキャッシュ (ランタイムリンカ、ld.so が利用するために)を作り、これはもとからあるデ ィレクトリ('/usr/lib' と '/lib')についても同じです。インストールが正し く終了するとスタティックライブラリの代わりにダイナミックライブラリを使 うように構築された TERM クライアントがこれら3つのライブラリファイルを 使えるようになります。また、これらのライブラリはあなたの自分のソフトウ ェアを TERM 対応にするために利用することもできます(以下参照)。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.5. 環境変数の設定  TERM はユーザによって設定されたいくつかの環境変数を認識します。これら のうち、私が解説する最初の3つは: ・ TERMDIR ・ TERMSHARE ・ TERMMODE  これらの変数を設定することで TERM の実行方法をコントロールすることが できます。  バージョン 1.15 までの TERM では変数 TERMDIR だけが重要です(これらの バージョンに共有モードはありません)。これらのバージョンでは、TERMDIR は 以下のようにセットするとよいでしょう。 setenv TERMDIR $HOME (csh または tcsh) export TERMDIR=$HOME (bash)  バージョン 1.16 からは TERM はさらに変数 TERMSHARE と TERMMODE を認 識するようになっています。これらの変数によって、TERM にプライベートモー ドで走るのか共有モードで走るのかを知らせることができます。ここではプラ イベートモードと共有モードへの変数の設定法を解説しましょう。  TERMMODE は以下の3つの値をとります。 ・ 0 = プライベート ・ 1 = システム共有 ・ 2 = ユーザ共有 1. TERM をプライベートモードで実行するには、変数 TERMDIR と TERMMODE を以下のように設定します:  csh と tcsh では setenv TERMDIR $HOME setenv TERMMODE 0  bash では export TERMDIR=$HOME export TERMMODE=0 2. TERM を共有モードで利用したい場合、変数の設定には二つの方法がありま す: a. TERM が SUID プログラムとしてインストールされた場合、 TERMMODE のみ設定する必要があります。 setenv TERMMODE 2 (csh または tcsh) export TERMMODE=2 (bash) b. TERM が SGID プログラムとしてインストールされているときには、変 数は以下のように設定する必要があります。  csh か tcsh では setenv TERMMODE 1 setenv TERMDIR /usr/local/lib/term setenv TERMSHARE $TERMDIR  bash では export TERMMODE=1 export TERMDIR=/usr/local/lib/term export TERMSHARE=$TERMDIR  このように変数を設定することで、古いクライアント(古いバージョ ンの client.a をリンクしたクライアント)の実行が可能になります。  バージョン 2.0.0 から TERM はさらに変数 TERMSERVER を認識する ようになりました。この変数は複数のモデムを持っていて、同時に2 以上のコネクションを張るときに設定する必要があります。どのコネ クションを使うのか特定するために、TERM をサーバネーム付きで起動 しなくてはなりません: nohup term -v /dev/modem1 Connection1 & nohup term -v /dev/modem2 Connection2 &  ユーザは使いたいコネクションの名前を変数 TERMSERVER に設定す ることになります。 setenv TERMSERVER Connection1 (csh または tcsh) export TERMSERVER Connection2 (bash) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.6. TERM のテスト  TERM のテストデーモンを構築するために make test (新しいバージョンの TERM では make termtest)を実行してください。(term)test はあなたのシステ ム上で二つのコピーとして作動し、trsh と tupload が可能になっているはず です(試してみてください tupload ./term /usr/tmp は '/usr/tmp’に TERM バイナリのコピーを作成します)。ローカルの TERM の出力は 'local.log'に、リモートのものは 'remote.log'に出力されます。あ なたは TERM を -d255 フラグをつけてこれらのファイルにデバッグ出力をさせ ることができ、また、termrc ファイル中でセットすることもできます。 注意:test は ./test と実行し、あなたのシステムの test が実行されてしま わないようにしてください。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.7. TERM とコミュニケーションプログラム  TERM を使えるようにする前に、kermit や seyon といったコミュニケーショ ンプログラムを用いてモデム経由の接続を確立しなくてはなりません。コミュ ニケーションプログラムのドキュメントに、リモートマシンとの接続の確立に は何をすることが必要なのかが書かれています。  リモートマシンとの接続が確立し、TERM を起動しようというときに、リモー トマシンとの接続を切らないでコミュニケーションプログラムを終了、あるい は中断する必要があります。コミュニケーションプログラムが linecheck や TERM からキャラクタを奪ってしまわないように、このことが必要です。  どのように接続を保持し、コミュニケーションプログラムが linecheck や TERM からキャラクタを奪わないようにするのかについて、以下にいくつかのコ ミュニケーションプログラムを挙げます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.7.1. Kermit  kermit を使っているなら、TERM を始めるのは簡単です。ローカルの kermit プロンプトで suspend と打ち込めばいいのです。Linux のプロンプトに戻った でしょう。このプロンプトから TERM コネクションを張ることができます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.7.2. Seyon  あなたが seyon を使っているなら、linecheck や TERM を起動するのに簡単 な方法は Transfer Menu ('$HOME/.seyon/protocols'によってコントロールさ れています)に登録してしまうことです。  ファイル '$HOME/.seyon/protocols' に加えてください: "Line check" "$cd /tmp; linecheck" "Term" "$term -c off -w 10 -t 150 -s 38400 -l $HOME/tlog"  その後ローカルマシンで linecheck や TERM を実行したければ、Transfer Menu を選んで、"Line Check" か "Term" アイテムを選択し、"Go" します。  もちろん、シェルコマンドボタンを使って、ポップアップダイアログボック スに 'linecheck' や 'term' と打ち込むこともできます。これはさらに自動的 に入力と出力をリダイレクトします。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.8. 透過的なリンクを作る  きっと、あなたはローカルとリモートのホストとの間のモデムコネクション を確立できるでしょう。一般的には、何らかの種類のターミナルサーバにダイ アルし、そこからリモートホストに接続することになるでしょう。あなたはさ らにモデムと会話するために kermit や seyon などのある種のターミナルソフ ト(著者が使っているため、この文書では例としてkermit を挙げます)を使って いることでしょう。もしモデムやターミナルソフトで問題が起きたら、 Serial-HOWTO を読んでください;きっと助けになるでしょう。  リンクを確立し終えたら、それを可能な限り透過的にしたいと思うでしょう 。ターミナルサーバのコマンドをチェックしてください(help か ? から始まる でしょう)。可能なら8ビットオプションをつけてください。これはシステムへ のログインの仕方を変えることになるかもしれません。例えば、もしサーバが rlogin を使っていたら、それを使わなくてはならないし透過的にするためには それに -8 オプションをつけなければなりません。特に xon/xoff フロー制御 には注意してください。それは好ましくありません。rts/cts (ハードウェア) フロー制御ができるようにしてみてください。8ビット rts/cts コミュニケー ションを形成するためにモデムのドキュメントを読む必要があるかもしれませ ん。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.9. linecheck を実行する 警告:いくつかの文書では、linecheck のコマンドラインオプションが間違っ た順序で説明されています。私はこれをチェックし、以下のオプションの順序 が正しいことを確認しました。 注意:TERM バージョン 2.3.0 からはコマンドラインにログファイルの名前を 必要としなくなりました。ログファイルは linecheck を起動したディレクトリ 上のファイル 'linecheck.log' にその出力を書き出します。  Linecheck は TERM とともに供給されるプログラムです。リンクの透過性を チェックして TERM が正しく動作するために必要な設定の情報を提供します。 linecheck は8ビットのキャラクタ 256 個をそれぞれ送り、それがきちんと送 信されたかどうかを検査します。TERM はリンクを通じて送信できないキャラク タを設定されなくてはなりませんので、linecheck はそのキャラクタが何なの かを特定するのです。linecheck は透過的モデムリンクを利用可能な形に確立 してから用います。linecheck を動作させるために、以下のこと行ってくださ い: 1. リモートシステム上で実行 linecheck linecheck.log 2. ローカルシステムに戻って、コミュニケーションプログラムを中断します (上を参照) 3. ローカルシステム上で実行 linecheck linecheck.log > /dev/modem < /dev/modem  linecheck の実行が終わると、linecheck.log ファイルの終わりにいくつか 数字が出ていることがわかります。これらは、リンクの相手側において termrc の中でエスケープされなくてはなりません。例えば、私のシステムで、ローカ ルの 'linecheck.log' に何も書かれておらず、リモートの 'linecheck.log'に 29 と 157 をエスケープするように書かれていたとします。そこで、ローカル の 'termrc' ではこれらのキャラクタをエスケープし、リモートの 'termrc' では何もエスケープしません。もし片側でキャラクタをエスケープしたら、反 対側では無視しなくてはなりません。ですからこの例では、リモートシステム で 29 と 157 を無視しなくてはならないことになります。  linecheck がハングアップしたら、 linecheck linecheck.log 17 19 をリモートシステムで、そして linecheck linecheck.log 17 19 > /dev/modem < /dev/modem をローカルで実行してみてください。これは xon/xoff (フロー制御)をエスケ ープします。これはソフトウェアフロー制御を行っているときにラインをハン グアップさせてしまいます。もし、このことでハングアップの問題が解決した なら、それぞれの 'termrc' で 17/19 をエスケープ/無視する事になります。 もしターミナルサーバがまた別のキャラクタを通さないようになっていたら、 上と同じようにして、それらのキャラクタをエスケープして linecheck を実行 してみてください。linecheck がハングアップしたらこれらのキャラクタを特 定することができます。もしこうなってしまったら、kill して、その後ログフ ァイルを見てください。最後に送信されたキャラクタが悪いということなので しょう。これらのキャラクタをエスケープしてもう一度試してみてください。  最終的に、私のローカルの termrc はこのような行を含みます。 ┌──────────────────────────────────┐ │ escape 29 │ │ escape 157 │ └──────────────────────────────────┘  そして、リモートの termrc はこのような行を含みます。 ┌──────────────────────────────────┐ │ ignore 29 │ │ ignore 157 │ └──────────────────────────────────┘  これはリモートの 'linecheck.log' に 29 と 157 をエスケープするように 書かれていたからです。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.10. TERM を実行してみる  リモートシステムにログインして、(まだやっていなければ)可能な限り透過 的なリンクを張ってください。TERM をリモート側で起動します。私は以下の方 法をとっています: exec term -r -l $HOME/tlog -s 38400 -c off -w 10 -t 150  それぞれのオプションを一つ一つ書き下しましょう(私はこれらのオプショ ンを termrc に簡単に加えることもできたのです。しかし私は、TERM が作動し ているときにファイルを編集することを避けるために、このような方法をとっ ています)。  exec は現在のシェルを終了して、そこに与えられたプログラムを走らせます 。私はログインシェルをもう一度使う気がないので、exec しています;それは 単にメモリの無駄だからです。リンクのデバッグを行っているときや、確実に リモートの TERM を kill したい場合には、exec を使うことを望まないかもし れません。  -r オプションは、片側だけでつける必要があります。TERM はこれをコネク ションのリモート側だと判断します(TERM のリモート側はあなたのローカルマ シンであることも可能であることに注意してください)。もし片側でこのオプシ ョンを使わないと、 TERM クライアントは自発的にクラッシュします。  -l $HOME/tlog :これは、ホームディレクトリのファイル tlog にエラーを 記録します。デバッギングには非常に有効です。これをやらない手はありませ ん。  -s 38400 :私は 14400 ボーの圧縮機能付きモデムを持っています。最適な 圧縮比で、可能な限り速くパイプを通したいのです。さらに遅いモデムでは、 幾分低い値を用いるべきでしょう。もしあなたがシリアルポートとして 16450 uart を持った遅いマシンを使っているのなら、高いボーレートはシリアルポー トのチップへの過負荷によってデータを失うかもしれません。TERM はこれを修 復するでしょうが、ログファイルに多くのエラーメッセージ(または 0.99pl15 以上のバージョンの linux カーネルからのオーバーランウォーニング)がある 場合、この数値をさらに下げることになるでしょう。  -c off :これはデータ圧縮をオフにします。私は圧縮モデムを持っているの で、二重の圧縮をしたくないのです。  -w 10 -t 150 :これも、速いモデムリンクを最適化するためのオプションで す。私は window を 10 に、timeout を 150 にセットしています。これは term_setup のマニュアルページの推奨値によるものです。  コミュニケーションプログラムを中断して(上を参照)ローカルマシンに戻っ てください。あなたは TERM が動作しているときにそれ(訳注:コミュニケーシ ョンプログラム)も動作していることを望まないかもしれません。シリアルポー トを通して TERM とぶつかってしまうかもしれないからです。もしコミュニケ ーションプログラムを終了してもモデムがハングアップしないようにできるな らば(DTR がトグルしたとき)、この時点でプログラムを終了してしまうことも できます。  ではローカルで TERM を起動しましょう。私はこれを用いています: term -c off -; $HOME/tlog -s 38400 -w 10 -t 150 < /dev/modem > /dev/modem &  TERM にモデムがどこにあるのかを教えてやる必要がありますので、標準入 力と標準出力を '/dev/modem' に向けています(< と > が行っているのがこれ です)。さらにバックグラウンドで実行しています;このスクリーンで他にやり たいことができるからです。  これで TERM は動作するはずです :-)。trsh を実行して、何が起こるか確か めてください。もしハングアップしたり、リンクが遅く感じるようであればそ れぞれの側の 'tlog' を見てみてください。タイムアウトやエラーが発生して いますか?もしそうならば、何かを間違えて設定してしまったことになります 。もう一度(これを読み終えた後で :-)試してみてください。なお、コネクショ ンがおそろしく速く見える、ということではありません。特に圧縮を使ってい る場合には−−ちょっとギクシャクした感じになるでしょう。本当のスピード はファイル転送などの時にわかります。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.11. TERM を終了する  間違いなく、あなたが TERM を使ってたくさんの作業をした後、作業を終え て TERM コネクションを落とそうと思うでしょう。このためには4つの方法が あることを理解しなければなりません。 1. 両方の側の TERM プログラムを kill する。これがコネクションを終了す るために勧められるもっとも単純な方法です。 2. より良い方法は以下のコマンドをローカルで実行することです。 echo '00000' > /dev/modem  この方法でうまく TERM コネクションを終了できるでしょう。これはす べてのバージョンの TERM で働きます。ゼロの列が少なくとも5個の0を 含んでいるようにしてください。 3. バージョン 2.0.0 以上の TERM の termrc ファイル中で、 terminate ' ' という記述を加えられるようになりました。これは TERM を終了させる文字列('00000'がデフォルト)を設定します。偶然終了してし まうことを避けるため、5文字以上でなければなりません。 4. バージョン 1.14 からは tshutdown というプログラムがあります(実際は 、バージョン 1.14 ではこれはパッチの形で入手できたのですが、それよ り新しいバージョンではパッケージに組み込まれました)。tshutdown の実 行で TERM コネクションをうまく終了できます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.12. パーティションから TERM を削除する  そうですか、これが必要なんですね。TERM を離れたいあなたのために TERM を削除するステップについて説明します。TERM を削除する課程で以下のステッ プを踏まねばなりません: ・ ディレクトリを内容とともに削除する。TERM をインストールする方法によ って、あなたのマシンには以下のディレクトリの中から一つかそれ以上の ディレクトリが存在するはずです: $HOME/.term/termrc $HOME/.term/termrc. $HOME/term/termrc $HOME/term/termrc. /usr/local/lib/term/termrc /usr/local/lib/term/termrc. /etc/termrc /etc/termrc.  これらのディレクトリはその中身と共に削除することができます。この ためには '/bin/rm -rf'を使ってください。 ・ 'term'グループ。インストールの方法のうちいくつかでは、'term'という グループを作る必要がありました。'/etc/group' に'term'エントリがない か確認してください。もしあったらそれを削除します。 ・ TERM パッケージと TERM 対応実行可能ファイル。これが TERM の削除では もっとも面倒な部分でしょう。TERM パッケージについてくる実行可能ファ イルについては、ディレクトリ'/usr/local/bin'かディレクトリ '$HOME/ bin'を見る必要があります。  あなたが自分で TERM 対応にした実行可能ファイルについては、私は助 けになれません。何を削除するべきなのかを知るためにはあなたがどの実 行ファイルを TERM 対応にしたのかを知る必要があります。デフォルトと それらの実行可能ファイルに付属するその他のファイルについて、構成を 忘れないようにしてください。 ・ ライブラリファイル。これらを削除するためには以下のようにするのが最 も良いでしょう: cd / find . -name libtermnet* -exec /bin/rm {}  このコマンドはライブラリファイルを見つけて削除します。 ・ インクルードファイル。これに関しても、以下のコマンドを実行するのが 最も簡単です: cd / find . -name termnet.h -exec /bin/rm {}  このコマンドはインクルードファイルを削除します。 ・ マニュアルページ。TERM のマニュアルページをインストールしているなら 、以下のディレクトリのどれかで見つけだせるはずです: /usr/local/man/man1 /usr/local/man/cat1 $HOME/man/man1 $HOME/man/cat1  最低でも以下のマニュアルページについて確認しなくてはなりません: term, term_clients, term_setup, tdownload, linecheck, trdate, trdated, termrc, termtest, tmon, tredir, trsh, tshutdown, tupredir, tupload, txcommand 最後に tiptest ・ テンポラリユーザディレクトリ。これはディレクトリ '/usr/tmp/private' とその内容です。  これらの作業によって、TERM に関連するあらゆるものを削除したと確信でき ることになります。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.13. コネクションを最適化する  TERM を実行させることができたら、最適化を行おうと思うでしょう。リンク のスピードを測るのによい方法は、ファイルをアップ/ダウンロードしながら 一つのウィンドウで tmon を実行することです。(大きな)テキストファイルと 圧縮されたファイルの両方で試してみてください;プレインテキストは圧縮さ れたファイルの二倍くらい速いでしょう。いじれるパラメータはボーレート (-s)、圧縮(-c)、ウィンドウ (-w)、タイムアウト(-t)、そしてリトレイン(-A) です。  リトレインパラメータには注意してください。TERM バージョン 1.19 ではリ トレインパラメータなしのものに比べ 80% から 90% の性能低下がありました 。これが TERM バージョン 1.19 のバグなのか、この問題が TERM バージョン 1.19 だけのものなのかはっきりしていません。  ボーレート:TERM が毎秒シリアルリンクを通して送ろうとするビット数の最 大の数です。TERM はこれ以上の速さでキャラクタを送ることを避けます。デフ ォルトはコンピュータのシリアルポートのスピードを使うことですが、電話回 線の状態などでモデムの動作速度がシリアルポートより遅い場合、このスピー ドは速すぎるかも知れません。ボーレートオプションは、モデムへの出力をバ ッファリングするシステムで使用するものです。セットアップとチューニング の時には大きすぎるものよりは、小さなボーレートを使う方がいいでしょう。 高速のリンク(> 38400)では、無制限にするのがおそらく有利でしょう。これは 値 'off' を使うことで実現できます。TERM はそうすると、フロー制御を完全 にカーネルに依存してしまいます。  圧縮:圧縮モデムを持っていないのなら、これをオンにしたいでしょう。圧 縮モデムを持っているのなら、圧縮はオフにすべきです。でないと二重に圧縮 することになって、一般的には送信するデータを増やしてしまうことになりま す。圧縮モデムは MNP-5 や V42.bis プロトコルを用いるものです。モデムの 説明書とモデムの接続メッセージを確認してください。  ウィンドウ:これは、リモートの TERM から承認(または ack)が返ってくる までにライン上を送ろうとするデータ、あるいはパケットのまとまりの数です 。速いモデムでは、これを大きくすることは利益になるでしょうが、遅いリン クではこれがリモート側を圧迫するかもしれません。  タイムアウト:TERM が ack を待つ時間です。ウィンドウを上げたなら、ま たログファイルにタイムアウトが出たら、これを増やしてみてください。  14400/V42.bis では、私は -c off -w 10 -t 150 を使っています。tupload で圧縮ファイルではだいたい 1700 cps を、アスキーファイルでは 3500 cps を得ています。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.14. トラブルシューティング  このセクションでは、TERM やそのクライアントの実行で問題が生じた時に何 を確認すべきかについていくつかの考えが示されています。 ・ TERM のディレクトリは整理されていますか?新しいバージョンの TERM で は '/usr/local/lib/term' 以下のディレクトリ構造が二度変更されていま す。もしこれに気づかなかったら、すべての種類のエラーメッセージを引 き起こすことにもなります。いちばん良いのは '/usr/local/lib/term' 以 下を('termrc' はセーブして)削除し、新しい TERM のバージョンをインス トールすることです。そうすれば乱雑なディレクトリツリーと格闘せずに 済みます。 ・ 古いソケットを削除しましたか? TERM のバージョンを上げるときには TERM によって作られたすべてのソケット('socket='と呼ばれます)を削除 してください。これをしないと奇妙な問題が発生する可能性があります。 TERM がどのソケットを見張っているかを知るには、"netstat" プログラム が使えます。 ・ TERM は sunOS 4.1.3 で正しくコンパイルできませんか?あなたは TERM を './configure --user' で設定していますね。コンパイル中に不明な '-k' フラグがあるというアセンブラエラーが出ますね。このエラーの理由 はわかりません。このエラーに対する解決法は TERM をスタティックライ ブラリで設定することです。このために、'./configure --user --static' を実行する必要があります。その後普通通りにコンパイルしてください。 今度は TERM は正しくコンパイルされるはずです。 ・ termtest が 'Term: failed to connect to term socket '/root/.term/ sockettest'' というエラーを発生していますか? termtest は実行時に実 行可能な 'term' が termtest と同じディレクトリにあることを前提にし ています。termtest を実行する前に 'make install' するのなら、TERM のバイナリは '/usr/local/bin'(または他の bin ディレクトリ)に移動さ れています。  これに取りかかるには、バイナリからソースディレクトリにリンクを張 ります。 ln -s /usr/local/bin/term /usr/src/term-/term ・ 正しいバイナリを実行していますか? TERM は相当何度もアップデートさ れていますし、多くのシステムは異なった、バージョンの流動的なプログ ラムを持っています。正しいバージョンを使っていることを確認してくだ さい。これは linecheck にも当てはまることに注意してください。bash の type -a や whereis コマンドでどのプログラムが走るのかを知ること ができます。TERM バージョン 1.11 以降では、スタート時にバージョンナ ンバーをプリントアウトします(しかしながらバージョン 1.14 は 1.12 だ と言います。ふう。)。 ・ 正しい termrc を正しい場所に置いていますか?あなたの使っている TERM のバージョンとインストールの方法(root としてか、ユーザとしてか)によ って、ファイルは以下のディレクトリのうちの一つにあるはずです。 $HOME/.term/termrc $HOME/.term/termrc. $HOME/term/termrc $HOME/term/termrc. /usr/local/lib/term/termrc /usr/local/lib/term/termrc. /etc/termrc /etc/termrc.  システムによってはあらかじめインストールされた 'termrc' がありま す;セットアップする前にそれらが消されていることを確認してください 。root として作業しているのなら、'/.term' に注意してください。TERM は実行中にファイル(実際にはソケット)を作成します。そのために自身の ディレクトリを持っているのです('termrc' の頭にドットがついていない ことに注意)。 ・ TERM は 'termrc' ファイルを見つけられていますか?どちらの側で TERM を起動するときにも、以下のようなメッセージを目にするはずです: Term version: 2.2.9 Reading file: /usr/local/lib/term/termrc Using shared mode  もし二行目がなかったなら、TERM は 'termrc' ファイルを見つけられな かったということになります。インストールの途中で何かうまくいかなか ったのでしょう ('termrc' ファイルを使わずに全てのオプションをコマン ドラインに入れているのなら別です :-)。'termrc' を見つけられなかった 側の TERM のサイトで、'termrc' ファイルの場所とパーミッションを確認 してください。 ・ 'termrc' ファイル中のエントリは正しい文法とスペリングになっています か?明らかになっている問題は、いくつかのキャラクタをエスケープした り無視したりしたい人たちが 'termrc' ファイルに次のように書くことで す: escape 1,4,30,255 ignore 1,4,30,255  TERM は何も言わずこれを受け付けません。escape や ignore の記述の 最初のキャラクタだけをエスケープ、あるいは無視します。他のキャラク タは、何も言わずにないものとして扱います。  いくつかのキャラクタをエスケープ、あるいは無視しなくてはならない 場合、それぞれキーワード escape あるいは ignore で始まる別々の行に 書かなくてはなりません。エスケープ、あるいは無視しなければならない キャラクタに幅があるときのみ、以下のような方法をとることができます : escape 16-29 # escape characters 16, 17, 18, 19 escape 23 # 23 escape 255 # and 255 ignore 16-19 # ignore characters 16, 17, 18, 19 ignore 23 # 23 ignore 255 # and 255 ・ 'term' または '.term' ディレクトリが NFS でマウントされていませんか ?もし 'term' または '.term' ディレクトリが NFS でマウントされてい る場合、Makefile の CFLAGS の行に -DTERM_NFS_DIR フラグをセットする 必要があります。残念ながら、筆者は sunOS 4.* が走っているマシンでこ のフラグによってコンパイルエラーを発生してしまいました。 ・ 全てのファイルやディレクトリが正しいユーザとグループに所有されてい て、適切なパーミッションを設定されていますか?インストールの時に設 定されるので問題にならないはずです。しかし、自分のプログラムを TERM に対応させるときには注意が必要です。また、TERM の動作するモード(プ ライベートモードか、共有モードか)を変えるときには、ファイルとディレ クトリの所有者とパーミッションも適合させる必要があります。 ・ エラー gethostbyname: : Non-authoritative `host not found', or server failed が発生した場合。  これを解決するには以下のことを確認してください: 1. ファイル '/etc/hosts' は正しく設定されていますか? はあなたのホスト名ではありません(古い SLS のリリースと、いくつ かの古い、また新しい Slackware リリースでは、例として 'darkstar' というホストネームがついています)。ファイルの中のこ の部分を修正してください。最低でも以下の行を含まねばなりません (書き方はその上に書いてあります): # Local Hosts Format: # IP_NUMBER HOSTNAME ALIASES # # Here is the name of your host, first, followed by any aliases 127.0.0.1 localhost linuxpc.domain linuxpc  もし外界とのコネクションが TERM によるものしかないのであれば 、ファイル '/etc/hosts' にあるのは上の行だけということもあるで しょう。よく訪れる行き先の実際のアドレスを '/etc/hosts' に書か ないでください。TERM はこれらが '/etc/hosts' に入っていることに よって手間取ることになってしまいます。 2. '/etc/rc*' と '/etc/resolv.conf' が誰でも読み出し可能に(chmod ugo+r)なっていますか。 3. 最後に、マシンに TCP/IP ループバックインターフェースがインスト ールされていることを確認してください。コマンド 'ifconfig' を実 行することによってループバックを確認できます。ループバックイン ターフェースがインストールされていれば最低でも画面にこのような 結果を得るはずです: ┌───────────────────────────────────────┐ │ lo Link encap:Local Loopback │ │ inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.255.255.0 │ │ UP BROADCAST LOOPBACK RUNNING MTU:2000 Metric:1 │ │ RX packets:0 errors:0 dropped:0 overruns:0 │ │ TX packets:4984 errors:0 dropped:0 overruns:0 │ └───────────────────────────────────────┘  ブート時にどのプロトコルが使用中か確認することもできます。私 のマシンでは以下のような行が表示されます: ┌──────────────────────────┐ │ IP Protocols: ICMP, UDP, TCP │ └──────────────────────────┘  TCP/IP やループバックインターフェースのインストールについては 、NET-HOWTO を読んでください。 ・ あらゆる種類の 'timed out' メッセージが TERM のログファイルに記録さ れたのですか?これは TERM コネクションが最適化されていないことを意 味しています。少ない数のメッセージが時々現れる程度なら問題はありま せん。これらはまず間違いなくローカルとリモートを結ぶ物理的コネクシ ョンに影響を与える一時的な要因によるものです。  これらのメッセージを常にたくさん受け取る時は、コネクションは相当 スピードを落とすでしょう。上のセクション「コネクションを最適化する 」で挙げたパラメータをいじる必要があります。残念ながら、インストー ルのこの部分はトライアンドエラーの過程ということになります。コネク ションに影響を与える要因はたくさんあるので、いろいろなパラメータに ついてどのような数値にしたら良いかというような一般的な決まりはあり ません。これらの要因はコネクションによっても、また時間によっても異 なります。 ・ リダイレクトされたポートを使う通常の FTP が働きませんか?残念なこと に、FTP に必要なポート(20 と 21)のリダイレクションでは FTP が働かな いというのは明らかになっている問題です。唯一の解決法は TERM 対応の  ftp か ncftp を入手することです。これまた残念なことに、いくつかの TERM 対応 ftp のバージョンは動作しないように思います。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5. TERM クライアント  TERM はデフォルトでいくつかのクライアントを提供しています。これには trsh, tmon, tupload, tredir, txconn そして新しいバージョンでは trdate, trdated が含まれます。さらに、バージョン 2.0.0 からは tudpredir が利用 可能になり、バージョン 2.1.0 からは tdownload が利用可能です。このセク ションでは trsh, tmon, tupload, tdownload, trdate そして trdated につい て扱います。その他についてはそれ自身のセクションがあります。TERM リンク を確立するまでは TERM クライアントは動作しません。  tmon はリンクの状態をモニターする簡単なユーティリティです。受信した、 また送信したキャラクタのタイムヒストグラムを表示します。単純に tmon で 起動できます。バージョン 1.11 などでは、間違った(??)情報を表示するバグ があります。  trsh は rsh に似ています。引数なしでは、リモートシステムのインタラク ティブシェルを起動(つまりログイン)します。trsh は TERM を通してリモート 側にアクセスする基本的な方法の一つです。引数を渡すと、trsh はリモートシ ステムのコマンドとして実行します。例えば trsh ls はリモートシステムのホームディレクトリのファイルのリストを得られます。  tupload はローカルからリモートへ、最初の引数で与えられたファイルを転 送します。デフォルトでは、ファイルは、相手側で TERM を起動したのと同じ ディレクトリに格納されます。ファイルを他のディレクトリに入れるには、そ の名前を tupload の二つ目の引数として与えます。例えば、もしファイル 'term114.tar.gz' をリモートシステムの '/usr/tmp' にコピーしたいとすると 、このようにタイプします tupload term114.tar.gz /usr/tmp  tupload を使うときは 'tupload a.*' のようにワイルドカードを使うことが できます。シェルはワイルドカードを展開して、tupload は 'tupload a.1 a.2 ......' のように呼ばれます。  tdownload はリモートからローカルへ、最初の引数で与えられたファイルを 転送します。デフォルトでは、ファイルはローカル側で TERM を起動したのと 同じディレクトリに格納されます。ファイルを別のディレクトリに入れるには 、その名前を tdownload の二つ目の引数として与えます。例えば、ファイル 'term114.tar.gz'をローカルシステムの '/usr/tmp' にコピーしたいとすると 、このようにタイプします tdownload term114.tar.gz /usr/tmp  tdownload を使うときには 'tdownload a.*' のようにワイルドカードを使う ことはできません。その理由は tdownload を使うときには、ローカルのシェル にはリモートのディレクトリが見えていないからです。そのため、ローカルの シェルはワイルドカードを展開できないのです。  trdate は時刻を設定するユーティリティです。リモートマシンの時刻を読み とってローカルの時計をリモートに合わせます。これは root で実行されなく てはなりません。  trdated は trdate のデーモンバージョンです。'rc.local' で起動されると デーモンとして実行され、5分(デフォルト)毎に時刻を合わせます。TERM コネ クションのない時でも、rc.local にセットされると起動します。TERM コネク ションが張られると、時刻を合わせはじめます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6. X と TERM  TERM はネットワーク上のマシンで走っているクライアントから X のウィン ドウを開くことを可能にします。これは txconn クライアントによってなされ ます。txconn はネットワークにつながったリモート上で実行されます;単に txconn と起動するだけです。txconn はバックグラウンドに回って標準出力に 数字を返します;この数字は、クライアントがローカルマシンの X サーバにア クセスするときに使うディスプレイ番号です。例をあげればはっきりするでし ょう。私は foo というリモートの TERM ホストに trsh を通してログインして います。私は以下のことを実行します。 foo$ txconn Xconn bound to screen 10 :10 foo$  では、自分のマシンの X サーバで表示したい X クライアントを走らせるホ スト上で、こうします。 setenv DISPLAY foo:10 (bash では export DISPLAY=foo:10 を使うことになります) xhost + foo あるいは xhost + をローカルマシンで実行しなければならない場合もあります。今、クライアン トを起動すると、クライアントはマシン foo のスクリーン 10 番につなごうと します。が、 txconn がこのスクリーンを見張っていて、X プロトコルのパケ ットを TERM を通じてローカルホストの X サーバに転送します。すなわち、ウ ィンドウはローカルマシン上に開くわけです。  このことは別の向きでも可能です−ローカルマシンでクライアントを実行し 、ウィンドウをネットワーク上のリモートマシンに開くのです;しかしこれを 説明するのは、後で tredir について議論するときまで先送りにします。 X プロトコルはそんなに効率が良くありません;いくらかバンド幅を無駄に使 います。このことはイーサネットでは普通問題になりませんが、モデム経由で は命とりにもなります。X11R6 は LBX という X プロトコルのバンド幅の低い バージョンを導入することを想定しています。しかしもし X11R5 を使うのなら 、X プロトコルを圧縮する sxpc というユーティリティを使うことができ、シ リアルライン上でのレスポンスを改善します。sxpc は TERM とともにどのよう に動かすかについて触れているので、おすすめできます。sxpc のパッケージに は xauth の使い方についても説明があるので、なおのことおすすめです。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7. tredir tredir は TERM のもっとも強力なユーティリティのうちの一つで、もっとも重 要なネットワークサービスを TERM リンク上で動作させることを可能にします 。tredir をどうやって使うかを説明する前に、ネットワークサービスについて の裏側を少し説明しておく必要があるでしょう。以前にもネットワークサービ スについて触れましたが、それが何であるかにははっきりとは触れませんでし た。サービスというのはつまり−ネットワークによって提供されるサービスの ことです。サービスの例としてはマシン間でのログインを提供する telnet や 、マシン間でファイルを転送する File Transfer Protocol, ftp や電子メール を送る時に使う the Simple Mail Transfer Protocol, smtp などがあります。 それぞれのネットワークサービスにはそれに付随したポート番号があります。 サービスに対するポート番号の割り当ては、インターネットにつながったマシ ンの中のファイルによって与えられています。 サービスはどのようにして呼び出されるのでしょうか?それぞれのネットワー クにつながったマシンには inetd というデーモンが走っていて、ネットワーク ポートへの接続の試みを見張っています。これらのリクエストはネットワーク からも、ローカルマシンからも来ることがあります。ネットワークサービスは 、適切な inetd ポートに接続することによって得られます。ネットワークリク エストが出されると、inetd はリクエストが出されたポート番号によってどの サービスを呼び出すかを知っています。 inetd がそのように設定されていれば 、接続要求に対して適切なサービスを提供します。inetd の設定は、ファイル '/etc/inetd.conf' によって与えられ、それには inetd が提供するサービスの リストが載っています。さらに情報を得るには、inetd と inetd.conf のマニ ュアルページを見て下さい。 telnet (termtelnet でないことに注意)を使ってネットワークサービスと直接 通信することができます。例えば、マシン machine_name 上の sendmail (また は smtp) デーモンと会話するには、telnet machine_name smtp とするか、 telnet machine_name 25 (25 は '/etc/services' で smtp に割り当て得られ た番号です)とすることができます。リモートマシンのデーモンから丁寧な挨拶 を受けることでしょう。これはネットワークの問題や tredir によってリダイ レクトされたポートの確認(以下参照)のために大変有効なトリックです。 tredir は inetd と大変似た働きをします。デーモンとしてバックグラウンド で実行され、ネットワークポートを見張ってリクエストを待ちます。サービス に対するリクエストが出ると、inetd がするように、サービスを提供する代わ りにそのリクエストを TERM リンクを通じてリモート TERM に転送し、リモー トの TERM はネットワークを通じてリクエストを出し、ローカルのクライアン トに対してリンクを通じて結果を返します。tredir はネットワーク上のどのマ シンにもリクエストを転送できますが、デフォルトでは TERM リンクの相手側 のマシンに送ります。tredir は TCP (Transmission Control Protocol)ネット ワークサービスを TERM リンクを通じてリダイレクトします。 tredir の一般的なコマンドの形式は: tredir [this_computer:]port [that_computer:]port 例をあげるとはっきりするでしょう。ローカルポートをリモートマシンの telnet ポートにリダイレクトしてみましょう。このためには、 tredir 2023 23 とします。これで、ローカルマシンのポート 2023 につないだ人はリモートマ シンのポート 23 (telnet) にリダイレクトされます。これがセッションの例で す;ローカルマシンを mymachine.modem.home 、リモートマシンを netsun と します。 $ tredir 2023 23 Redirecting 2023 to 23 $ telnet localhost 2023 Trying 127.0.0.1... Connected to mymachine.modem.home Escape character is '^]'. SunOS UNIX (netsun) login: この例は実際に非常に便利です。代わりに netsun で tredir を実行したとし ます。ネットワークにつながったマシンのリダイレクトされたポートにつなぐ (telnet を使って)だけで mymachine に telnet できることになります−すな わち、 telnet netsun 2023 とするのです。 tredir の利用の一般的な本質はネットワーク上のマシンに必要とされるサービ スをリダイレクトすることです。次の例では、ネットワーク上のニュースサー バから TERM リンクを通してローカルマシンでニュースを読めるようにします 。ニュースは nntp サービスで提供され、ポート番号は 119 です。全てのきち んとしたニュースリーダは、設定ファイルか環境変数でどのポート番号を使う かを設定できるようになっています。これをローカルのポート 2119 に決めま しょう。では、ニュースサーバを news.domain.org とします。ポート 2119 を news.domain.org のポート 119 にリダイレクトします;そしてニュースリーダ には nntp サーバがローカルホストのポート 2119 にあると設定してやります 。利用するニュースリーダにもよるので、ここではニュースリーダの代わりに telnet を使ってリンクをテストするだけにしましょう。 $ tredir 2119 news.domain.org:119 Redirecting 2119 to news.domain.org:119 $ telnet localhost 2119 Trying 127.0.0.1... Connected to mymachine.modem.home. Escape character is '^]'. 200 news.domain.org InterNetNews NNTP server INN 1.4 07-Dec-41 ready (posting ok). ここまで来れば、あとやるべきことはニュースリーダを TERM を通して読める ように設定することだけです(もしこのようにしてニュースを読むのであれば、 投稿する全ての記事の Reply-To: ヘッダににきちんと届く email アドレスを セットする必要があります。そうでないと、あなたに連絡をとろうとする人達 はニュースリーダのつける間違った) From: ヘッダを見てメールを出してしま うでしょう)。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.1. tredir can bite! 最後の例を読んだ賢明なる読者は、なぜポート 2119 をポート 119 にリダイレ クトしたのかを不思議に思うでしょう−−ニュースリーダのデフォルトがポー ト 119 ならば、なぜ tredir 119 news.domain.org:119 として、ニュースリー ダの設定をしないで済まさないのだろうかと。答えは 1024 より小さいポート は「予約ポート」で、スーパーユーザだけがこれを使うことができます。もし セキュリティ上の危険を冒して tredir を SUID するか、root として tredir を実行すれば、予約ポートにリダイレクトして、サービスの変更の混乱を避け られるでしょう。 予約ポートを使うもう一つの問題はすでに inetd がそれらのポートを見張って いて、また同時には一つのプログラムしかポートを見張ることはできません。 そのようなポートを使うためには、リダイレクトしたいポートを変更しなくて はなりません。ぶつかっているサービスの行に # をつけてコメントにしてしま うのが簡単です。スーパーユーザはそのあと、inetd に HUP シグナルを送って (kill -1 inetd-pid)、その設定を読み直させなくてはなりません。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.2. Stupid tredir tricks このセクションでは、もっと一般的な tredir の利用を述べます。すでに nntp と telnet サービスをリダイレクトする方法については述べました;ここでは もう少し複雑な例をあげます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.2.1. X windows 前のセクションで、txconn を使ってネットワーク上で走っている X のクライ アントに、ホームマシンにウィンドウを開かせる方法について述べました。 TERM リンクのリモート側のマシンに、あなたのホームマシンからクライアント を表示するのに同じテクニックが使えます。しかしリモート側になっていない ネットワークマシンに X クライアントを表示するにはどうしたらいいでしょう ?答えは、我々が議論してきた他のプログラムと同じように、X が特定のネッ トワークサービスを使っているということです。X サーバは、ポート = 6000 + ディスプレイ番号という形の番号で与えられるポートでネットワークリクエス トを見張っています。例えば、マシンのスクリーン 0 を使っている X サーバ は、ポート 6000 を見張っています。もしスクリーン 2 を使っているなら、ポ ート 6002 を見張っているということです。DISPLAY 環境変数を xmachine:n のようにセットすると、X クライアントは xmachine のポート 6000 + n につ なごうとします。 このことを、ローカルマシンの X クライアントをだましてリモートのディスプ レイにウィンドウを開かせるのに使うことができます。ローカルマシンで走る xterm を、ネットワークのどこかにある xmachine のディスプレイ 0 に開いて みましょう。最初に、ローカルのディスプレイ番号、2 を選びます(0 を使って はいけません。ローカルの X サーバがきっと使っているはずだからです。この ディスプレイを xmachine のディスプレイ 0 に割り当てます。ポート番号で言 うと、このことはローカルポート 6002 をリモートポート 6000 にリダイレク トすることになります。こうしてみましょう。 $ tredir 6002 xmachine:6000 $ setenv DISPLAY localhost:2 $ xterm これで xmachine 上に xterm が開くはずです。しかし DISPLAY を localhost: 2 にセットしたことに注意して下さい。これは、DISPLAY を :2 にセットする と X クライアントがローカルディスプレイに接続した時にオプションでインタ ーネットドメインソケットではなく unix ドメインソケットを使うことがある からです。localhost:2 は TCP コネクションを使うように指示しています。 xmachine とつながっている限り、X リクエストは TERM リンクのリモート側 (remotemachine)から来ることに注意して下さい。ですから、もしコネクション を認証したいのであれば、xmachine 上で xhost + remotemachine を実行する か、xmachine からの鍵を使ってディスプレイ番号2についてローカルマシンの '.Xauthority' を更新するために xauth を使うべきでしょう。 もう一度言いますが、X の接続のスピードをあげるために sxpc というプログ ラムを使うことができ、そこでリンクを確立するためにどのように tredir を 使うか、 xauth を使ってそれをどのように認証するかについての説明がなされ ています。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.2.2. TERM とメール これについて聞きたいですか。電子メールは UNIX システムの中で、きちんと 動作させるのがもっとも難しいものの一つであるという専らの評判です。メー ルとともに TERM を本当にきちんと動作させるということは、メールがどのよ うに働いているかを知ることでもあり、それはこの文書の範囲外です。メール についてさらに知りたいのなら、UNIX システム管理の書籍や rtfm.mit.edu:/ pub/usenet/comp.mail.misc から anonymous ftp で手に入る comp.mail.misc の FAQ を参考にして下さい。現在 TERM のもとでメールを働かせる手助けにな る二つのパッケージが sunsite.unc.edu から anonymous ftp で手に入ります 。Byron A. Jeff による term.maierd+smail と Bill C. Riemers による BCRMailHandler です。 メールプログラムには二つのクラスがあります。最初の一つはメールユーザエ ージェント(MUA)です。MUA はメッセージを読み、書き、そして送ることを支援 します。 MUA の例は elm, pine, Mail, そして vm です。MUA は全くネットワ ーキングを行ないません;メッセージを取りまとめるだけです−−メールを送 る実際の仕事は二つ目のクラスのプログラム、メールトランスファーエージェ ント(MTA)によってなされます。これらは MUA によって呼び出されます。これ らはメッセージを受け取り、アドレスを見てどこへ送るのかを決定し、実際に ネットワークを通じて配送します。 Linux システムにおける最も一般的な MTA は sendmail と smail です。基本 的な要点は、あなたの MTA を、メッセージをどのように処理するかを知ってい るネット上のマシンで動作している別の MTA につなぐことです。これは、ネッ ト上のマシンの smtp ポートにローカルポートをリダイレクトすることで実現 できます。あなたは MTA を、そのように扱っていいかわからないメッセージを 受け取って、それをローカルマシンのリダイレクトされたポートを通じてリモ ートマシンの MTA に送り、そしてそれがメッセージを正しい宛先に送るように 設定しなくてはなりません。 smail を使ってどのようにこれを実現できるでしょうか?最初に、ネットワー ク上のメールマシン(mailhost)にポートをリダイレクトします。 tredir XXXX mailhost:25 ここで、XXXX はローカルホストの smail が接続するポート番号です(これには 名前をつけて '/etc/services' に書いて smail に認識させなければなりませ ん)。Smail には普通 '/usr/local/lib/smail' に置かれるいくつかの設定ファ イルがあります。これからの論議では、すでにローカルメールについては正し く設定されているものとします−−ファイルや、パイプや、そういったものへ の配達です。もう一度言いますが、まだできていないのであればドキュメント を読んでください。  ファイル 'config' に、以下のような定義を加えます: smart_path=localhost  localhost は、メッセージをどう扱っていいのかわからないときにつなぐマ シン名です。  'routers' には、これを入れます。 smart_host: driver=smarthost, transport=termsmtp; path=localhost  'transport' にはこれを入れます。 termsmtp: driver=tcpsmtp, inet, return_path, remove_header="From", append_header="From: YOUR_NET_ADDRESS", -received, -max_addrs, -max_chars; service=YOUR_SMTP_SERVICE,  上では、header の行が出ていく全てのメールの From ヘッダを YOUR_NET_ADDRESS に書き換えています。これはあなたがメールを送りたいネッ トワークのアドレスです。もし複数のユーザが TERM リンクを使うのなら、ロ ーカルユーザのネットワークアドレスのデータベースを作って From: ヘッダに 埋め込むなどの工夫が必要です。  service の行はネットワークにつながったマシンの smtp ポートにリダイレ クトしたローカルのポート番号の名前を入れます。私のバージョンの smail で は、これは番号を設定するだけではだめで、"foo" のような名前を付けてやり 、 '/etc/services' の中でリダイレクトされたポートとして定義する必要があ ります。もし SUID された tredir を使って、smtp ポート(25)をリダイレクト するのであれば、これを定義する必要はありません。  これで十分なはずです。もし sendmail を使うことにしたのなら、原理的に は同じですが細部が異なります。Ronald Florence (ron@mlfarm.com)は標準の Sun の sendmail ではリダイレクトされたポートを通してはキューに入った複 数のメッセージを送ることはできないと教えてくれました;BSD の sendmail 8.6.9 はうまくいきます。彼は '/etc/sendmail.cf' を TERM とともに使える ように以下のように変更しました。彼の場合、デフォルトの sendmail ポート (25)はローカルのイーサネットを通しての smtp トラフィックに利用されてい たため、インターネットメールはリダイレクトされたポートに転送することに しました。 # #Create the termsmtp mailer, which sends mail via a re-directed TCP port # Mtermsmtp,P=[TCP], F=mDFMuCXe, S=22, R=22, A=TCP $h PORTNUMBER  ここで、PORTNUMBER はローカルマシンのリダイレクトされたポートの番号で す。これは 2000 以上の使われていないポートであるべきでしょう。次に、 sendmail にどのマシンにつなげばいいのかを伝え、またデフォルトメーラとし て termsmtp をセットします。 # # major relay mailer # DMtermsmtp # # major relay host: use the $M mailer to send mail to other domains # DR HOSTNAME CR HOSTNAME n  ここで、HOSTNAME はローカルホストの名前です(localhost で動くでしょ うか?)。最後のエントリはインターネットメールを転送する O ルールに基づ くものです。 # Pass other valid names up the ladder to our forwarder R$*<@$*.$+>$* $#$M $@$R $:$1<@$2.$3>$4 user@any.domain  インターネットホストに TERM コネクションが確立されたら、ローカルマシ ン上で次のコマンドを実行してください。 tredir PORTNUMBER internet.host:25 /usr/lib/sendmail -q  ここからは電子メールを TERM を使って受け取る方法に移ります。メールは mailhost というネットワークマシンにあるあなたのアカウントに届けられてい るとします。最も簡単な解決法は単に trsh か termtelnet で mailhost にロ グインしてそこでメールを読むことです。しかし、あなたのメールをローカル マシンに自動的にダウンロードさせることも可能なのです。これを実現する方 法の一つが Post Office Protocol, (POP)です。POP はまさにこの目的のため にデザインされています:間欠的なネットワークコネクションを持つマシンに メールを配送するためです。POP を使うには、mailhost で POP サーバがイン ストールされていなくてはなりません。そうなっていれば、POP クライアント を使って数分ごとにメールをダウンロードできます。期待通り、これは tredir で行われます。POP サービスは 110 です(古いプロトコル POP-2 があって、こ れがポート 109 を使うことに注意してください;この文書では POP の最新版 である POP-3 について記述します)。いくつかの POP クライアントが入手可能 です。一つは、スクリプト言語 perl によって書かれた pop-perl-1.X で、 William Perry によって書かれ、私がメンテナンスしています−− sunsite.unc.edu:/pub/Linux/system/Mail で見つかるでしょう。  POP を使うために、ローカルポートを mailhost のポート 110 にリダイレク トし、クライアントにはローカルポートを使ってローカルホストからメールを 取得するように設定します。例では、mailhost で POP サーバが走っているこ とを仮定します。ローカルポート 2110 をリダイレクトし、pop-perl クライア ントを起動します: $ tredir 2110 mailhost:110 Redirecting 2110 to mailhost:110 $ pop Username: bill Password: Pop Host: name of local Pop Port: 2110 Starting popmail daemon for bill  POP サーバが利用できない場合、BCRMailHandler パッケージに TERM リンク を通じてメールをローカルマシンにダウンロードするプログラムが含まれてい ます。私は使ったことがありませんが、使ったことのある方のコメントを歓迎 します。 term.mailerd+smail パッケージもこの目的に使うことができます。 残念ながら、 BCRMailHandler も term.mailerd+smail パッケージも TERM バ ージョン 2.0.0 以上ではもう動きません。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8. tudpredir  tudpredir は、プログラムが何をするのか、またどのように起動されるのか ということを見れば tredir に似ています。これら二つのプログラムの大きな 違いは tredir が TCP ネットワークサービスをリダイレクトするために使われ るのに対して、 tudpredir は UDP (User Datagram Protocol) ネットワークサ ービスを TERM リンクを通してリダイレクトするということです。二つのプロ グラムの間のもう一つの違いは、tredir がローカルポートを確立するのに成功 するとバックグラウンドデーモンになるのに対して、tudpredir では明示的に バックグラウンドに回さなければならないということです。  一般的な tudpredir の形は: tudpredir [this_computer:]port [that_computer:]port ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9. 作業の自動化  さて、ここまでで全てのネットワークサービスを TERM を通して得る方法を 知りましたので、リンクが自動的にセットアップされ、設定までできるように なったらいいですね。そのような方法はどのコミュニケーションプログラムを 使うのか、こと用にリモートシステムにログインするのかによって無数に存在 するでしょう。  私は使ったことがありませんがとてもいいと聞いているプログラムが fet, a front end for TERM です。これはリモートシステムにログインし TERM を起動 し全ての tredir を実行するようデザインされています。fet についてのあら ゆるコメントは大歓迎です。  ここでは例として、kermit を使ってリモートシステムにログインし、全ての TERM の初期化をするコマンドのセットを紹介しましょう。もちろんですが、あ なたがこの例を使うのなら、あなた自身のログイン手順にあわせて修正する必 要があるでしょう。  実際に呼び出されるコマンドはシェルスクリプト 'knet' で、このようなも のです。 #!/bin/sh /usr/bin/kermit -y $HOME/.kerm_term > $HOME/klog < /dev/null 2> & 1 exec $HOME/bin/tstart >> $HOME/klog 2> & 1  スクリプト '.kerm_term' は次のようなものです。 pause 2 # The number you want to dial output atdtXXXXXXX \13 # Login to the terminal server input 145 {name: } output MYNAME \13 input 3 {word: } output MYPASSWORD \13 input 5 {xyplex>} # Make the line transparent output term telnet-t \13 output term stopb 1 \13 # Connect to the remote host output telnet remotehost.somedomain.org \13 input 10 {ogin: } output MYOTHERNAME \13 input 3 word: output MYOTHERPASSWORD \13 pause 5 # Fire up term on the remote host output exec term -s 38400 -l $HOME/tlog -w 10 -t 150 \13 ! /usr/bin/term -r -l $HOME/tlog -s 38400 -c off -w 10 -t 150 < /dev/modem > /dev/modem & # Open other clients here suspend !killall -KILL term  最後に、 TERM クライアントを起動するスクリプト 'tstart' がこれです。 #!/bin/sh # # This lets mail get out, can read news here, can pick up my mail here # /usr/local/bin/tredir 2025 25 2119 newshost:119 2110 pophost:110 # # So I can open up Xwindows here # /usr/local/bin/trsh -s txconn # # So I will receive mail.... # /usr/local/bin/pop # # Clean out the queue, in case of boo-boos # /usr/bin/runq # # Done now # echo ^G^G > /dev/console  最後にコネクションを切りたくなったら、kermit をレジュームし、サスペン ドしてください。スクリプトの最後の行がローカルの TERM を kill してシス テムを最初の状態に戻します。  (著者からの注意:'!killall -KILL term' する代わりに '!tshutdown' でも 可能なはずなのですが、これも動くでしょうか?)  先ほどいったように、やり方は無数にあります;これらは単にスタートを切 るための例に過ぎません。このほかの例も autoterm や JoelTermStuff のパッ ケージで見つかるでしょう。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10. ソフトを TERM とともに使えるようにする  原理的には、ネットワークを使うプログラムは TERM との組み合わせでも動 かせます。そのうちのいくつかはすでに TERM が組み込まれたバイナリとして 手に入ります。これらには telnet, (nc)ftp, Mosaic そしてその他たくさんあ ります。それらのプログラムのほとんどは TERM 1.17 以前のもののためにコン パイルされています。しかし、新しいバージョンの TERM でも動くはずです。  プログラムを TERM 対応にするもう一つの方法は、自分で移植することです 。この過程については次のサブセクションで述べます。  プログラムを TERM 対応にする最後の方法は、temify することです。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.1. ソースの移植とコンパイル  ソフトウェアを TERM に移植するのはとても簡単な移植手順で可能です:  もし '/usr/local' に root によってインストールされているならば: 1. コンパイルフラグ -include /usr/local/include/termnet.h を加える 2. ライブラリリストに -L$HOME/term -ltermnet を加える  そしてソフトウェアについてくる INSTALL や README といった文書に書かれ た通りにコンパイルすればいいのです。これだけです!  この時点で、コマンドは TERM と共にでもそうでなくとも動作します。 telnet localhost は接続に TERM を使いませんが、 telnet bohr.physics.purdue.edu は他のタイプのネットワークコネクションがない限り TERM を使います。  rlogin のようないくつかのコマンドは root か TERM コネクションの所有者 (特権を持っている人)だけが実行できます。  いくつかのコマンドは TERM に対し透過的で、他に選択肢のない時にだけ TERM を用います。例としては telnet や ftp があります。  他のものは TERM を使ってよいということを外からフラグをたてて伝える必 要があります。これらのプログラムには xarchie, fsp そして ytalk が含まれ ます。  これらのプログラムにフラグを与えるには、環境変数 TERMMODE を README.security にならって設定することもできますし、make installnet を 実行することもできます。結局、作られる'termnet' ファイルは特別なネット ワークの指示を含みますが、その存在だけが確認されるのです。  もしイーサネット接続を加えるのなら、単に 'termnet' ファイルを削除して 同じバイナリを使い続けることができるのです!  注意:client.a の頃に移植されたプログラムは単に client.a から termnet.a を見るように変更するだけで、新しいバージョンの TERM でも再コ ンパイル可能です。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.2. Termify  このパッケージは、TERM を使うためにダイナミックリンクライブラリを変更 します。  termify を使う前に、TERM バージョン 2.2i (これはバージョン 2.2.8 でし ょうか?)以上、そして libc.so.4.5.26 以上を使っている必要があります。そ の後、ディレクトリ '/lib' にファイル 'libt.so.4' を作る必要があります (パッケージの README ファイルを見てください)。  この時点での問題は、TERM のバージョンをあげるごとにファイル 'libt.so.4' を作り直さなくてはならないということです。  ライブラリができたら、このようなコマンドを使って、 TERM 対応にしたい プログラムを termify に食わせてやればいいのです: termify  最後に、パッケージには 'smail' を完全に termify するスクリプトが入っ ています;特別な転送の設定は必要ありません。変更しなければならないのは 'From:' アドレスくらいでしょう。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11. Term クライアント 11.1. ftp サイトから入手可能な Term クライアント  以下に、TERM を使って実行することのできるアプリケーションのリストを挙 げます。これが完全だとはいいません;あらゆる追加を歓迎します。可能な限 りアプリケーションのあるサイトとディレクトリを入れているつもりです(私の 知識の全て)。私がアプリケーションの見つかる場所は sunsite.unc.edu であ ると記述したら、それは以下の二つのディレクトリから見つかるという意味で す。 1. /pub/Linux/apps/comm/term/apps 2. /pub/Linux/apps/comm/term/extra  ではいってみましょう :-) TERM パッケージ: ┌────────────────────────────┐ │ tupload │ │ tdownload (バージョン 2.1.0 以上) │ │ trsh │ │ tmon │ │ tredir │ │ tudpredir (バージョン 2.0.0 以上) │ │ txconn │ │ trdate(d) │ │ tshutdown │ │ libtermnet │ └────────────────────────────┘ ファイル転送: ┌──────────────────────────────────────────┐ │ ftpd sunsite.unc.edu │ │ termncftp sunsite.unc.edu │ │ ncftp185 sunsite.unc.edu:/pub/Linux/system/Network/file-transfer │ │ fsp sunsite.unc.edu:/pub/Linux/system/Network/file-transfer │ └──────────────────────────────────────────┘ インフォメーションシステム: ┌─────────────────────────────────────────────┐ │ lynx │ │ Mosaic sunsite.unc.edu:/pub/Linux/system/Network/info-systems/Mosaic │ │ chimera │ │ netscape sunsite.unc.edu:/pub/Linux/system/Network/info-systems │ │ httpd │ │ xgopher │ │ gopher sunsite.unc.edu │ └─────────────────────────────────────────────┘ リモートログイン: ┌─────────────────────────────────┐ │ termtelnet sunsite.unc.edu │ │ rlogin physics.purdue.edu:/pub/bcr/term/extra │ │ rsh physics.purdue.edu:/pub/bcr/term/extra │ └─────────────────────────────────┘ ネットニュース: ┌─────────────────────────────────┐ │ tin 1.3 sunsite.unc.edu:/pub/Linux/system/Mail/news │ │ news2 sunsite.unc.edu │ └─────────────────────────────────┘ メール: ┌──────────────────────────────┐ │ slurp sunsite.unc.edu │ │ smail sunsite.unc.edu │ │ term.mailerd+smail sunsite.unc.edu │ │ BCRMailHandlerXXX physics.purdue.edu:/pub/bcr/term │ └──────────────────────────────┘ 自動化スクリプト: ┌────────────────────────────┐ │ JoelTermStuff sunsite.unc.edu │ │ autoterm sunsite.unc.edu │ │ fet sunsite.unc.edu │ └────────────────────────────┘ その他のプログラム: ┌─────────────────────────────────────┐ │ inetd sunsite.unc.edu │ │ rdate sunsite.unc.edu │ │ xgospel sunsite.unc.edu:/pub/Linux/games/x11/networked │ │ termify physics.purdue.edu:/pub/bcr/term/extra │ │ xboard sunsite.unc.edu │ │ ircII sunsite.unc.edu:/pub/Linux/system/Network/chat │ │ whois │ │ xwebster sunsite.unc.edu │ │ sxpc ftp.x.org:/R5contrib │ │ xztalk sunsite.unc.edu:/pub/Linux/apps/sound/talk │ └─────────────────────────────────────┘ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.2. termnet パッケージ  termnet-2.0.4-Linux-bin.tar.gz (sunsite.unc.edu:/pub/Linux/apps/comm/ term) パッケージにはいくつかのコンパイルされた TERM クライアントとスク リプト、マニュアルページや libtermnet.so.2.00.04 が含まれています。クラ イアントは libtermnet.so のバージョンでコンパイルされています。パッケー ジは以下のクライアントを含みます: ┌──────────────────────────────────┐ │ fet │ │ finger │ │ ftp │ │ fwhois │ │ ncftp │ └──────────────────────────────────┘ 警告:このパッケージには TERM 自身を含む TERM 2.0.4 のコンパイルされた クライアントも含まれています。何をしたいのかを確認しないでインストール してはいけません。実行ファイルをあちこちに移動しだすと、他のバージョン の TERM やそのクライアントを破壊してしまうこともあります。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3. 望まれてはいるがまだサポートされていないもの 1. DOOM: クライアントとサーバの両方がポート 5029 を使うという事実がこ のゲームの問題になっているようです。 2. NFS: NFS は接続要求をするソケットが 1024 以下のポートにつながるよう になっている場合に限りリクエストを受け付けると仮定しています。これ は面倒なことです。しかしながら、いくつかの NFS サーバは 'insecure' オプションを持っています。このような場合 RPC サポートが Term に加え られれば NFS は動くかもしれません。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12. Term とセキュリティ  このセクションでは、いくつかの TERM のセキュリティの外観について指摘 しておきます。問題が説明され、セキュリティを向上させる方法が書かれてい ます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.1. trsh  trsh はリモートシステムからローカルの Linux box にアクセスするために 使われると危険です。TERM とそのクライアントの問題は、TERM コネクション の所有者に加えて 'root' もコネクションを通じて TERM 対応プログラムを実 行できるということです。  このことは、リモートシステムの 'root' が trsh を実行して TERM コネク ションの所有者のログインに入ることがわめて簡単にできるということです。  この問題の解決法は簡単です:ローカルマシンの termrc ファイルに次のよ うな行を入れるだけです: denyrsh on  これを 'termrc' ファイルにセットすることにより、リモートサイトにいる 誰もが trsh を使ってあなたのマシンにアクセスできなくなります。TERM コネ クションを通してあなたのローカル Linux box にアクセスしたいのであれば、 telnet やリダイレクトされたポートは使うことができます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.2. txconn と xauth  txconn は恐ろしく安全ではありません;誰でもが TERM を通じてあなたのロ ーカルサーバにあらゆるいたずらを仕掛けることができます。この種のことで 心配するのなら、コネクションを認証するために xauth を使うことを考えるの がいいアイデアになるでしょう。xauth を使ってコネクションを安全にする方 法については次のセクションを見てください。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.3. sxpc, xhost と xauth  sxpc は 'xhost +' と共に使うと、xauth を使わない限り非常に危険です。  sxpc を使うにあたって、xauth を使うことはセキュリティを確保する上で非 常に重要なことです。sxpc を使うとき xauth を使わないなら、'xhost +' を 使うのと同じ全ての危険が生じます。これらの危険が含まれますがこれに限り ません: ・ あなたのスクリーンに何が表示されているのかを見る ・ 何をタイプしているのかを見る ・ 誰かがあなたのウィンドウでタイプする(例えば、あなたの全てのファイル を削除する :-(  xauth は X リリース R4 から利用可能になっています。ここでは xauth の 基礎的な使い方のセットアップについて述べます。この設定はネットワークを 動き回るには無防備ですが、それでよければうまく動くでしょう。 注意:xauth を使うときには $DISPLAY 変数をローカルホストにセットしては 「いけません」(または、localhost:何とか)。$DISPLAY 変数がローカルホスト を使うようになっていると、クライアントは適切な認証情報を見つけることが できなくなります。本当のホスト名をつけてやればよいのです。README に従っ てコンパイルするなら、 -DNOGETHOSTNAME なしでコンパイルすればうまくいく でしょう。  クライアントを走らそうとするマシンを C と、また表示したいマシンを D とします。  最初に、最大 16 の 16 進数の数字の組を鍵として選びます(0-9 と a-f か らなる偶数個の数字ということになります)。この鍵を以下の例に示す の場所に置かなくてはなりません。 ・  C で: % xauth xauth: creating new authority file $HOME/.Xauthority Using authority file $HOME/.Xauthority xauth> add Chostname:8 MIT-MAGIC-COOKIE-1 xauth> exit ・ D で: % xauth xauth: creating new authority file $HOME/.Xauthority Using authority file $HOME/.Xauthority xauth> add Dhostname/unix:0 MIT-MAGIC-COOKIE-1 xauth> add Dhostname:0 MIT-MAGIC-COOKIE-1 xauth> exit  D で X サーバをスタートするときに、フラグ -auth $HOME/.Xauthority を つけなければなりません。X サーバがどのようにスタートするか、'$HOME/ xserverrc' を編集あるいは作成する必要があります。例えば: #!/bin/sh exec X -auth $HOME/.Xauthority $*  '.Xauthority' ファイルが C においても D においてもあなただけが読める ようにしておいてください。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13. 覚えておくこと  このセクションでは、TERM についてのソフトウェアや情報を得るのに役に立 つ ftp アドレスや URL を書いておこうと思います。 Ftp: sunsite.unc.edu:/pub/Linux/apps/comm/term/ sunsite.unc.edu/pub/Linux/docs/HOWTO/ physics.purdue.edu:/pub/bcr/term/ (編注:ftp://sunsite.unc.edu/pub/Linux/system/network/serial/term/ など) URL: http://sunsite.unc.edu/mdw/HOWTO/Term-HOWTO.html http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html (常に最新の バージョン) http://physics.purdue.edu/~bcr/homepage.html Netnews: comp.os.linux.announce 新しい TERM のバージョンと Term-HOWTO のアナ ウンス comp.os.linux.help TERM についての質問はここへ comp.os.linux.misc またはここ comp.protocols.misc TERM に関する質問への答えはここにもポストされま す 関連文書: Using Term to Pierce an Internet Firewall HOWTO by Barak Pearlmutter, bap@learning.scr.siemens.com Firewall HOWTO (日本語訳 ) by David Rudder, drig@execpc.com Serial HOWTO (日 本語訳 ) by Greg Hankins, gregh@cc.gatech.edu Net-2/Net-3 HOWTO (NET-3-HOWTO の日本語訳 ) by Terry Dawson, terryd@extro.ucc.su.oz.au  ネットニュースで質問をするときには、みなさんがその問題を解決するのに 十分な情報を入れるようにしてください(TERM のバージョン番号、コネクショ ンのセットアップの方法、等)。現時点で多くの TERM のバージョンが使われて おりそれ特有の、また一般的な問題も存在します。そのため、もし有用な回答 がほしかったら、少なくとも TERM のバージョンは記載すべきです。そうでな いと、場合によっては問題を解決するために大まかな推測だけしか得られない でしょう。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14. TERM のバージョンと信頼性  多くの TERM のバージョンが存在します。TERM をメンテナンスしている Bill Riemer は、どのバージョンが安定していてどのバージョンを避けるべき かというリストを作りました。このリストが以下のものです。 ┌──────────────────────────────────┐ │ term110 --> なんとも言えない │ │ term111 --> なんとも言えない │ │ term112 --> なんとも言えない │ │ term113 --> なんとも言えない │ │ term114 --> そこそこ安定したβバージョン │ │ term115 --> 不安定なβバージョン │ │ term116 --> 不安定なβバージョン │ │ term117 --> 不安定なβバージョン │ │ term118 --> いくらか安定したβバージョン │ │ term119 --> 安定したガンマバージョン │ │ term-2.0.X --> いくらか安定したβバージョン │ │ term-2.1.X --> さらに安定したβバージョン │ │ term-2.2.X --> 新しいβバージョン │ │ term-2.3.X --> │ └──────────────────────────────────┘ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15. Term スピード表  Bill McCarthy のおかげで、違うモデム、TERM のバージョン、コネクション の状態での TERM のスピード表があります。この目的は、新しい、また経験を 積んだユーザに他の人たちが何を使っているのか、またどのような結果を得て いるのかを知らせることです。 ┌──────────────────────────────────────┐ │ LINUX TERM 表 8/14/94 │ │ │ │ │ │ |___modem speed/make___|___line speed__|__avg cps__|__high__|__term ver_| │ │ | 1) USR SP 14.4 | 9600 | 950 | 963 | 1.17 | │ │ | 2) USR SP 14.4 | 14400 | 1376 | n/a | 1.18p06 | │ │ | 3) Zoom 2400 | 2400 | 220 | 230 | 1.19 | │ │ | 4) Boca V.32bis 14 | 57600 | 1400 | n/a | 1.01/09? | │ │ | 5) Viva 14.4 | 14400 | 1300 | n/a | 1.16 | │ │ | 6) USR SP 14.4 | 14400+ | 1550 | 1680 | 1.19 | │ │ | 7) Intel 14.4 Fax | 14400 | 1400 | 1650 | 2.0.4 | │ │ | 8) cable tv hookup | 57600 | 1500 | 1800 | 1.18p06 | │ │ | 9) Twincom 144/DFi | 57600 | 1500 | 4000? | 2.0.4 | │ │ | 10) USR SP 14.4 | 14400 | 1200 | 1500 | 1.08 | │ │ | 11) cable tv hookup | 19200 | 1300 | 1800 | 1.19 | │ │ |-----------------------------------------------------------------------| │ └──────────────────────────────────────┘ ┌───────────────────────────────────────┐ │ +コマンドフラグと/termrc 設定: │ │ │ │ 1) default escapes 2) window 5 3) baudrate 2400 4) n/a │ │ baudrate 9600 timeout 200 window 3 │ │ window 10 noise on │ │ timeout 150 │ │ │ │ 5) compress off 6) baudrate 19200 7) ignore 19+17 8) compress off │ │ window 10 compress on window 4 escape 0, 13, │ │ timeout 150 timeout 90 16-19, 255 │ │ baudrate 38400 baudrate 0 │ │ shift 224 │ │ flowcrtl 500 │ │ window 10 │ │ timeout 70 │ │ retrain on │ │ breakout 24 │ │ 9) compress off 10) compress off 11) baudrate 19200 │ │ baudrate 57600 baudrate 38400 compress on │ │ window 10 escape 17, 19 shift 224 │ │ timeout 200 remote escape 0, 13 16-17 │ │ noise on 19, 255 │ │ share on window 10 │ │ remote timeout 40 │ └───────────────────────────────────────┘  片方でエスケープしたキャラクタはもう一方で無視していることを意味して います。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16. ネット上で見つかるヒントとトリック  Linux 関連のニュースグループでは、毎週 TERM に関する多くの質問がなさ れまた回答されています。ニュースグループへのトラフィックを減らすため、 このセクションではこれらの質問とそれに対する答えをまとめてみようと思い ます。いくつかの答えについては、私も同じ問題に関係したために確認をしま した。それ以外は、単にニュースグループからとってきただけでテストはして いません。 ・ 多くの人たち、特に Ultrix を使っている人たちが、24 行のウィンドウを 使っているときに vi が 24 行以下しか表示しないというトラブルに見舞 われているようです。これを取り除くには3つの方法があります。 1. このようにリモートシステムにログインする trsh -s telnet 2. '.login' ファイルに 'resize; clear' を入れる 3. 最もいい解決法はリモートでこのように入れることではないでしょう か: stty 38400 ・ 多くの人たちが何らかの理由での TERM コネクションのクラッシュが問題 になっているようです。そのため、アプリケーションをスタートする前に TERM コネクションがまだ生きているのかそうでないのかを知りたいと思っ ています。例として、これは以下のような小さなシェルスクリプトで確認 できます: □  tcsh を使っているなら: if ( { trsh -s true } ) then ... endif □  bash を使っているなら   if trsh -s true; then ... fi ・ WWW ブラウザ Netscape を TERM と共に動かすことで問題が起きているよ うです。いいニュースは、これは TERM のもとで動くということです。ど のようにするかは: 1. Netscape を termify する 2. termnetscape を起動する Options | Preferences | Mail/Proxies 以下の「全ての」プロクシー ボックスを空白にする SOCKS のボックスを 'remotehost' & 80 にセットする。 3. Options メニューから出るときのエラーを無視する。 4. termnetscape が正しく動かなかったら: Options | Preferences | Mail/Proxies 以下の「全ての」プロクシー ボックスを空白にする SOCKS のボックスを 'none' & 80 にセットする。 5. Options メニューから出るときのエラーを無視する。  Scott Blachowicz は TERM リンクのリモート側にプロクシーサーバ(例えば 、CERN の httpd)がインストールされていれば Netscape やその他のブラウザ を TERM と共に動かすのはかなり簡単だとメールしてくれました。ローカル側 では、このようにします: 1. tredir localhost:8080 remotehost:80 ここで、 'remotehost' はプロクシーサーバシステムのホスト名です。 2. ブラウザを起動し、preferences や options やそういったものの中で 'localhost' のポート 8080 番をプロクシーにセットする。 いくつかのブラウザでは、このように環境変数をセットします。 export http_proxy=http://localhost:8080/ export ftp_proxy=http://localhost:8080/ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17. その他のこと  いくつかのことを入れたいと思っています。 ・ トラブルシューティングの拡張 ・ セキュリティの論点の拡張 ・ Termwrap ・ 提案  もし提案、批評、この文書に関する何か他にあれば、どのような形でも結構 ですので出してください。今は、私 Patrick Reijnen が TERM-HOWTO の原作者 となっています。私には(現在)、patrikr@bart.nl で連絡が取れます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18. 謝辞  多くの人たちに感謝します。まず第一に我々にこのようなすばらしいツール を提供してくれた Michael O'Reilly と TERM の開発者全てに。またこの HOWTO にフィードバック、また貢献してくれた全ての人たちに感謝します。前 の作者である Bill Reynolds, Ronald Florence, Tom Payerle, Bill C. Riemers, Hugh Secker-Walker, Matt Welsh , Bill McCarthy, Sergio Weyman Martin そしてここであげることのできない全ての人たちに感謝します。 <<訳者より>> 1. [無保証]私はこの翻訳が正しいことを保証しません。必要ならば Term の マニュアルやこの文書の原文を読むなどして下さい。 2. [謝辞]翻訳を支援して下さった JF の方々、ありがとうございます。 3. [お願い]この訳文の誤訳の指摘、御意見、御感想などお寄せ下さい。 編注: 日本語訳:1995年12月12日 - 藤井真吾 LinuxDoc への変換:2000年5月9日 - 中野武雄 DocBook への変換:2001年3月3日 - 千旦裕司