# ktalkdハンドブック

David
Faure

    faure@kde.org

バージョン0.9.0、1998年11月14日

日本語翻訳：レーザーファイブ(info@laser5.co.jp)

このハンドブックはktalkdバージョン0.9.0について説明します。

ktalkd文書

KTALKD
kotalkd
talk
talkd
otalk
ntalk
ktalkdlg
kcmktalkd

## はじめに

`ktalkd`はエンハンスドトークデーモン、つまりトーク要求を処理して通知し、ユーザーがトーククライアントを使ってそれに答えられるようにするプログラムです。

用語説明：この文書では、誰かが話しかけてきたときに、話しかけられたほうを「コーリー（callee）」と呼ぶことにします。

`ktalkd`には次のような特長があります。

KDEがいるのかいらないのか

  それが問題だ :)。真面目に言えば、`ktalkd`のコンパイルはKDEのサポートがあってもなくても可能です。KDEなしで使うと、コンパイル段階でX、QtまたはKDEがインストールされていないかどうか検出しますが、設定オプション '--without-X' を使えば非KDEデーモンを強制コンパイルできます。

留守番機能

  コーリーがログオンしていなかったり、通知を2回しても答えがない場合は、留守番機能によりメッセージを受け付け、それをコーリーにメール送信します。

サウンド

  通知時に音を鳴らすことができます。

X通知

  KDEをインストールしてコンパイルすると、ktalkdはKDEダイアログのktalkdlgを使って通知します。ktalkが動作していると、ktalk自体が通知するようになります。(バージョン0.8.8からの新機能).

マルチディスプレイ通知

  （たとえば`"export DISPLAY=..."`コマンドで）リモートログオンしている場合、X通知はこのディスプレイに対しても行われます。いずれか好きなところで答えてください。テキストターミナルにもログオンしていて、xtermsを使っていない場合（内部制約です）、通知時にテキストターミナルを使っていればテキスト通知を見ることができます。

転送(バージョン0.8.0からの新機能)

  あなたが不在の場合に、他のユーザーや他のホストへの転送を設定することができます。転送方法は3つあります。使用法の節を参照してください。

設定

  ktalkdをKDE用にコンパイルすると、ktalkdはKDE設定ファイル、サイトワイド設定ファイル（$KDEDIR/share/config/ktalkdrc）、およびホームディレクトリにあるユーザーの設定ファイルから設定を読みとります。サイトワイド設定ファイルはアドミニストレータが手作業で編集すべきものですが、今ではユーザー用のものについても設定ダイアログがあります。これは、kcmktalkd というもので、`ktalkd`をインストールするとKDEコントロールセンタから入手できます。非KDEシステムでは、`ktalkd`は/etc/talkd.confから読み出します。

国際化

  KDEでは、KDEメニューで言語を設定し、ktalkdlg がユーザーの国の言語に翻訳されていれば、通知はその言語で行われます。これは設定ダイアログkcmktalkdについても同じです。

otalkおよびntalkをサポート (バージョン0.8.1からの新機能)

  ktalkdは転送についてもこれらのプロトコルの両方をサポートしています。ktalk も両方のプロトコルをサポートしています。

このトークデーモンをお楽しみください。

David Faure

faure@kde.org

## サポートされているプラットフォーム

RedHat Linux 5.x

  私が使用している開発プラットフォームです。ここでは完全にテストしています。

その他のLinux、BSD

  コンパイルすれば動作します。

Solaris

  snprintfの代わりになるものを誰かが作ってくれるまで動作しません。もちろん、別のlibcをインストールすれば問題は解決しますが…

AIX

  localtimeやctime、その他の機能に問題が発生すると聞いています。

これらのシステムやその他のシステム上での`ktalkd`のコンパイルや動作について、ご意見をお待ちしています。

## インストール

### ktalkdの入手方法

`ktalkd`は今や、KDEプロジェクトhttp://www.kde.orgの中心アプリケーションで、kdenetworkパッケージの一部です。

しかし、最新版の`ktalkd`をKDEプロジェクトのメインftpサイトftp://ftp.kde.org/pub/kdeやそのミラーサイトからいつでもダウンロードできます。通常はftp://ftp.kde.org/pub/kde/stable/latest/apps/networkにあります。

### 要件

`ktalkd`のコンパイルには、最新バージョンのKDEライブラリとQt C++ライブラリが必要です。ktalkdと必要なすべてのライブラリはftp://ftp.kde.org/pub/kde/にあります。

### コンパイルとインストール

`ktalkd`をコンパイル、インストールするには、`ktalkd`ディストリビューションのベースディレクトリに以下をタイプ入力します。

    % ./configure
    % make
    % make install

`ktalkd`はデーモンなので、`make install`にはルート特権が必要です。

/etc/inetd.confを忘れずに更新してください。たとえばLinuxシステムでは、kdeが/opt/kdeにある場合、talkおよびntalkに関する行を次のように変えてください。

    talk   dgram   udp     wait    root    /usr/sbin/tcpd  /opt/kde/bin/kotalkd
    ntalk  dgram   udp     wait    root    /usr/sbin/tcpd  /opt/kde/bin/ktalkd

必要な変更を自動的に行うスクリプトがあります。 次を実行してinetd.confファイルを更新してください。

    % ./post-install.sh

しかし、この後、inetdを再起動する必要があります。 ほとんどのLinuxシステムでは、次のようにします。

    % killall -HUP inetd

お使いのプラットフォームで`ktalkd`をコンパイルするために行った修正をお知らせください。

## 使用法

ktalkdを使うにはトーククライアントが必要です。ほとんどのUNIXシステムにはテキストベースの`トーク`があります。`your&lowbar;usernameにトーク`して、トーク要求を受け取った時にどうなるか見てください。留守番機能についても同様のことを行ってみてください。自分自身にトークして通知を2回無視すると、留守番機能が作動します。

KDE用のグラフィカルインタフェースを備えたトーククライアント、`ktalk`があります。これはまだKDEパッケージに加えて出荷していませんが、 ftp://ftp.kde.org. にあります。これは ftp://ftp.kde.org/pub/kde/stable/latest/apps/network内にあります。

通知ダイアログボックスは大したものではありません。答えるか無視するかだけです。

設定ダイアログは、他ユーザー（あるいは他ホスト）への転送を設定する以外はかなり簡単だと思います。

### 転送方法を選択する

完璧なものはありません。どれにも長所 (+) と短所 (-) があります。

FWA : 通知だけを転送します。直接接続です。お勧めできません。

- (+) 発信者が誰かはわかりますが、

- (-) 発信者はあなたからの通知に答えなければなりません。煩わしいです。

- (-) 今いる場所に留守録機能がない場合には使わないでください。（留守録機能は通知を出しませんから、混乱します。）

FWR : すべての要求を転送します。必要に応じて情報を変更します。直接接続です。

- (+) 発信者にはあなたが不在であることがわかりませんが、

- (-) あなたにも誰が発信者であるかがわかりません。わかるのはユーザー名だけです（「Wintalk@my&lowbar;hostからのトーク」を参照するかも知れません）。

FWT : すべての要求を転送してトークも取り次ぎます。直接接続ではありません。

- (+) 上と同じですが、あなたと発信者が互いに直接接続できなくても（たとえばファイアウォールがある場合でも）動作します。

- (+) トークに答えたときに発信者が誰だかわかります。

- (-) しかしFWRのように、通知では相手のマシン名がわかりません。

つまり、ファイアウォールがある場合（ktalkdが両方のネットワークにアクセスできる場合）にはFWTを使えばよいし、それ以外の場合にはFWRを使うといいでしょう。

## Q　&　A

### なぜルートはKDE通知を受信しないのですか

現在のユーザーを検出するセキュリティホールだからです。xdmの設定ファイル（kdmの設定ファイルと同じものです）に2行加えると、この制限を解除できます。 注：S.u.S.E Linuxディストリビューションにはこの行がデフォルトで含まれています。

これらの設定ファイルは他のシステムの/etc/X11/xdmや/usr/X11R6/lib/X11/xdmディレクトリにあります。以下は設定ファイルが/etc/X11/xdmにある場合についてですが、このときは別のディレクトリのために設定ファイルを翻訳する必要があります。

以下のことを行います。 Xstartupファイルを（xdm configディレクトリで）次のように編集または作成します。

    #!/bin/sh
    /etc/X11/xdm/GiveConsole
    sessreg -a -l $DISPLAY -x /etc/X11/xdm/Xservers $USER

Xresetファイルを次のように編集します。

    #!/bin/sh
    /etc/X11/xdm/TakeConsole
    sessreg -d -l $DISPLAY $USER

xdm-configがこれら2ファイルを参照するようにします。

    DisplayManager._0.startup:      /etc/X11/xdm/Xstartup
    DisplayManager._0.reset:        /etc/X11/xdm/Xreset

これでkdm（またはxdm）はユーザーをutmpにログインするようになります。そしてこれで正しいのです。私の考えでは、ユーザーをログインするのはkvtでもxtermでもなく、xdmとkdmです。しかし、startxを使うとユーザーはXユーザーとしてログインされません。この問題を解くヒントが何かないでしょうか？

### なぜノーマルユーザーはKDEの通知を受信できないのですか

Linuxシステムでは（/procをイネーブルにしている場合）、この動作はバグです。状況を詳しく教えていただければ対処します。

Linux 2.0.35を動作させている場合なら、これはカーネル内の既知のバグで、ルートが/procを読めなくなるものです。解決方法は5.1節のものと同じですが、Xにログインするのにkdmまたはxdmを使っている場合に限ります。そうでなければアップグレードしてください。

あるいは、これは正常なことです。ktalkdはユーザーを見つけられないため、KDEがutmpにユーザーをログインできず、Linuxベースの（/proc）検出がディスエーブルされます。解決方法は5.1節のものと同じですが、Xにログインするのにkdmまたはxdmを使っている場合に限ります。もう1つの方法はxtermを常に動作させておくことです。

### どうすればktalkdからデバッグ出力が得られますか

これはデーモンですから、標準出力にデバッグ出力はありません。デバッグ出力を得るには（たとえば私にバグレポートを出す前に）、ktalkdおよびkotalkdを起動させるinetd.confの行を次のように更新してください。

    talk   dgram   udp     wait    root    /usr/sbin/tcpd  /opt/kde/bin/kotalkd -d
    ntalk  dgram   udp     wait    root    /usr/sbin/tcpd  /opt/kde/bin/ktalkd -d

（-dオプションに注目してください）

それから、/etc/syslog.confを編集して次の行を加えます。

    *.*         /var/log/all_messages

変更を有効にするために、inetdとsyslogdを再起動します。

    % killall -HUP inetd
    % killall -HUP syslogd

最後に、トークセッションを始めて /var/log/all&lowbar;messagesで結果を見ます。

バグレポートを出すときは、デバッグ出力を忘れずに添付してください。それから、ktalkdのバージョン番号と "./configure" 出力もお願いします。

## 著作権

ktalkdはDavid Faure、faure@kde.orgが管理、改良しています。

オリジナルのプログラム作成者はRobert Cimrman、cimrman3@students.zcu.czです。

    ktalkdの著作権はDavid Faure、faure@kde.orgが1997年、1998年に取得しています。

    このプログラムはフリーウェアです。このプログラムを再配布したり、Free Software Foundation発行のGNU General Public Licenseバージョン2または（使用者の判断により）それ以降の条件にしたがって変更を加えることもできます。

    このプログラムは利用者の便宜のために配布されているもので、商品性や特定の目的に対する適性に関する黙示的保証を含め、何の保証条件もありません。詳細はGNU General Public Licenseを参照してください。

    このプログラムにはGNU General Public Licenseのコピーが添付されているはずです。もしない場合は、Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USAに書面で連絡し、コピーを取り寄せてください。