ToolTalk ユーザーズガイド

第 4 章 ToolTalk プロセスの設定と管理


注 –

ToolTalk データベースのサーバープログラムは、ToolTalk オブジェクトまたは ToolTalk メッセージに関連するファイルが入ったマシンすべてにインストールされなければなりません。


ToolTalk サービスファイルの場所

ToolTalk バイナリとライブラリは、/usr/dt のシンボリックリンクとともに /usr/openwin にあります。したがって、Solaris 共通デスクトップ環境 (Common Desktop Environment、CDE) または OpenWindows (OW) のユーザーは、同じバージョンの ToolTalk を利用できます。オンラインのマニュアルページと ToolTalk デモプログラムのソースは、/usr/openwin にあります。

表 4–1 に ToolTalk サービスファイルを示します。

表 4–1 ToolTalk サービスファイル

ファイルまたは場所 

説明 

ttsession

メッセージの配信のため、ネットワーク上で他の ttsession と通信

rpc.ttdbserverd

ToolTalk オブジェクト仕様と情報を ToolTalk メッセージで参照されるファイルに保存して管理 

ttcp, ttmv, ttrm, ttrmdir, tttar

これらのコマンドは標準の OS シェルコマンドで、ToolTalk オブジェクトを含むファイルまたは ToolTalk メッセージの主体であるファイルがコピー、移動、または削除されたとき、その旨を ToolTalk に伝える

ttdbck

データベースチェックおよび ToolTalk データベースのためのリカバリツール

tt_type_comp

ptype および otype 用コンパイラ。ptype と otype をコンパイルし、ToolTalk 型データベースに自動的にインストールする

ttce2xdr

ToolTalk 型データを分類機構データベースフォーマットから XDR データベースフォーマットに変換する

ttsnoop

ToolTalk パターンを登録したり、ToolTalk メッセージを送信したりする Motif アプリケーション。ToolTalk メッセージトラフィックの一般的な監視も行う。これは、既存のアプリケーションのデバッグを行う際や、チュータとしてパターンの各部分がどのように受信メッセージをフィルタ処理するかを理解するのに便利 

tttrace

tttrace は、truss(1) に似ている。このアプリケーションは、その使用方法に 2 つの方法がある。これを使用して、特定の ttsession で発生しているメッセージパッシングとパターンマッチングをトレースすることも、ToolTalk API へのすべてのコールのトレースをプログラムごとに行うこともできる

libtt.so.2

アプリケーションプログラミングインタフェース (API) ライブラリ 

tttk.htt_c.h (/usr/dt/include/Tt にある)

メッセージの送受信用のアプリケーションで使用する ToolTalk 関数を含むヘッダーファイル

/usr/openwin/man/man1

ttsessionttdbcktt_type_comp などのユーザーコマンド用 ToolTalk のマニュアルページ

/usr/openwin/man/man1m

rpc.ttdbserverdttdbck などの ToolTalk 管理コマンド用 ToolTalk のマニュアルページ

/usr/openwin/man/man3

ToolTalk API コール用 ToolTalk のマニュアルページ 

/usr/openwin/man/man4

ToolTalk メッセージセットおよび ttsession(1)rpc.ttdbserverd(1M) で使用される構成ファイル用の ToolTalk のマニュアルページ

/usr/openwin/man/man5

インクルードファイル用 ToolTalk のマニュアルページ 

ttsample, edit_demo, Makefile (/usr/openwin/share/src/tooltalk/demo にある)

ToolTalk 簡易デモプログラム用ソースコード 

バージョン

すべての ToolTalk コマンドは、バージョンを出力する -v オプションをサポートしています。

必要条件

ToolTalk サービスに必要なソフトウェアには、ONC RPC があります。

環境変数

ここでは、ToolTalk と関連環境変数について説明します。

ToolTalk 環境変数

いくつかの ToolTalk 環境変数を設定できます。これらの変数について、表 4–2 に説明します。

表 4–2 環境変数

変数 

説明 

TTSESSION_CMD

ツールが ttsession を自動的に開始するときに、指定された標準オプションを無効にする。この変数を設定すると、すべての ToolTalk クライアントはこのコマンドを使用して、X セッションを自動的に開始させる

 

 

TT_ARG_TRACE_WIDTH

トレースモードを使用する際に、表示する引数およびコンテキストの値の文字数を定義する。デフォルトでは最初の 40 字を表示する 

TT_FILE

定義済みのファイルに範囲指定したメッセージがツールを呼び出す際に、ttsession がこの変数にパス名を設定する

TT_HOSTNAME_MAP

マップファイルを指す。定義したマップファイルは、ホストマシンのリダイレクトのために ToolTalk クライアントが読み取る 

TT_PARTITION_MAP

マップファイルを指す。定義したマップファイルは、ファイルパーティションのリダイレクトのために ToolTalk クライアントが読み取る 

TT_SESSION

ttsession は、それが起動するツールにセッション識別子を通知する。この変数を設定すると、ToolTalk クライアントライブラリは、その値をデフォルトのセッション識別子として使用する。この変数に記憶された文字列は、tt_default_session_set へ渡すことができる

TT_TOKEN

ToolTalk クライアントライブラリに、ttsession によって起動したことを通知する。これによってクライアントは、起動が正常であったことを ttsession に確認できる

TT_TRACE_SCRIPT

tttrace(1) についてトレーススクリプトで指定したように、libtt がクライアントサイドのトレースを行うようにする

TTPATH

tt_type_comp(1)rpc.ttdbserverd(1M) で使用する ToolTalk 型データベースがどこに常駐するかを ToolTalk に通知する

CEPATH

ToolTalk 型データベースの常駐場所を分類機構に通知する 

DISPLAY

TT_SESSION 変数を設定しない場合、ttsession は起動するツールにセッション識別子を通知する。

DISPLAY 変数を設定すると、ToolTalk クライアントライブラリは、その値をデフォルトのセッション識別子として使用する。この変数は、ttsession が OpenWindows 上で動作しているときに自動起動すると通常設定される。


注 –

Solaris 2.6 オペレーティング環境およびその互換バージョンのオペレーティングシステムでは、アカウントによってはこの変数が渡されない場合がある。つまり、コンソールにユーザー A またはユーザー B のスイッチユーザーとしてログオンしている場合は、通常 ttsession を自動起動する ToolTalk プログラムを実行しようとしても ttsession が自動起動しないことがある。この問題を回避するためには、この変数を手入力で設定するか、.login ファイルに含める必要がある。


DTMOUNTPOINT

この変数を設定すると、構築されているパス名の /net の代わりに、この環境変数の値を使用して、rpc.ttdbserverd(1M) による tt_host_netfile_file(3) 照会への応答を行う

ToolTalk サービスが自動的に起動すると環境が変わります。この環境の中には、$TT_SESSION$TT_TOKEN という環境変数や、キーワードがドル記号 ($) で始まる開始メッセージのコンテキストがすべて入っています。また、ファイルを配信範囲とするメッセージの場合には、$TT_FILE という環境変数もこの環境に入ることができます。


注 –

子プロセスが tt_open を起動する場合、その親プロセスはこの環境の変化を子プロセスに伝播しなければなりません。


その他の環境変数

ToolTalk の開発環境を操作するのに TMPDIR という環境変数も使用できます。たとえば、次のように入力すると、ディレクトリ /var/tmp にファイルがリダイレクトされます。


TMPDIR=/var/tmp

リモートホスト上のプログラムの起動に必要な環境変数

開始文字列によってプロセスが起動されるのは ttsession が動作しているホスト上だけですが、起動されたプロセスは他のホスト上の他のプロセスを起動できます。

そのためには、まず開始文字列を次のようにします。


# rsh farhost myprog

次に、myprog を確実に正しいセッションに入れて初期メッセージを受信させるために、ToolTalk の重要な環境変数をいくつか伝播する必要があります。これには、例 4–1 に示すように、シェルスクリプトの ttrsh を使用します。


例 4–1 ToolTalk 環境変数の伝播


#! /bin/sh
# Runs a command remotely in background, by pointing stdout and stderr 
# at /dev/null. By running this through the Bourne shell at the other end, 
# we get rid of the rsh and rshd.
#set -x
user=
debug=
HOST=${HOST-`hostname`}
if [ "$1" = "-debug" ]; then
	debug=1
	shift
fi
if [ $# -lt 2 -o "$1" = "-h" -o "$1" = "-help" ]; 
then
 echo "Usage: ttrsh [-debug] remotehost [-l username] \
remotecommand"
 echo "Usage: ttrsh [-h | -help]"
	exit 1
else
 host=$1
	shift
	if test "$1" = "-l" ; then
 	shift
		user=$1
		shift
	fi
fi
xhostname=`expr "$DISPLAY" : "\([^:]*\).*"`
xscreen=`expr "$DISPLAY" : "[^:]*\(.*\)"`
if test x$xscreen = x; then
	xscreen=":0.0"
fi
if test x$xhostname = x -o x$xhostname = x"unix";
then
 DISPLAY=$HOST$xscreen
fi
if [ "$user" = "" ]; then
	userOption=""
else
	userOption="-l $user"
fi
if [ $debug ]; then
 outputRedirect=
else
	outputRedirect='> /dev/null 2>&1 &'
fi
(
	echo "OPENWINHOME=$OPENWINHOME;export OPENWINHOME;\
TT_SESSION=$TT_SESSION;export TT_SESSION;\
TT_TOKEN=$TT_TOKEN;export TT_TOKEN;TT_FILE=$TT_FILE;\
export TT_FILE;DISPLAY=$DISPLAY;export DISPLAY;($*)" \
$outputRedirect | rsh $host $userOption /bin/sh &
) &

コンテキストスロットの使用による環境変数の作成

メッセージコンテキストは、ToolTalk サービスがアプリケーションを起動する際に特別な意味を持ちます。コンテキストスロット名がドル記号 ($) で始まる場合、ToolTalk サービスはこの値を環境変数として解釈します。たとえば、次のようにコンテキストスロット $CON1 の値が使用された場合です。


start "my_application $CON1"

ToolTalk データベースサーバーのインストール

ToolTalk データベースサーバーは、次の 3 種類の情報を格納するのに使用します。

  1. ToolTalk オブジェクト仕様

  2. tt_file_join 呼び出しでファイルを結合したクライアントを持つセッションの ToolTalk セッション ID

  3. メッセージの処置が TT_QUEUED であり、処理できるハンドラがまだ起動されていないために待ち行列に入れられている、ファイルを配信範囲とするメッセージ

さらに、ToolTalk データベースサーバーは、ToolTalk ファイル名マッピング API コール (tt_host_file_netfile()tt_host_netfile_file()) の照会に応答します。


注 –

ToolTalk データベースサーバーは、セッション中のファイルを配信範囲とするメッセージは格納しません。


ToolTalk サービスは、ToolTalk オブジェクトが入ったファイルまたは ToolTalk メッセージの対象であるファイルを格納している各マシンで、データベースサーバーを実行することが必要です。アプリケーションがデータベースサーバーを含まないマシンのファイルを参照しようとした場合は、次のメッセージと同様のエラーが表示されます。


% Error: Tool Talk database server on integral is not running: tcp

integral はホスト名で、tcp はアプリケーションプロトコルです。このエラーメッセージは、接続が異常終了したことを示します。接続の異常終了は、ネットワーク上の問題で生じることもあります。

rpc.ttdserverd がシステムにインストールされていることの確認

SUNWtltk と SUNWdtcor パッケージに ToolTalk メッセージに出てくるファイルが含まれている場合は、全マシンにそれらがインストールされている必要があります。rpc.ttdbserverd がシステムにインストールされているかどうかは、次の手順で確認します。

  1. システムにログインします。

  2. pkginfo(1) を使用して、SUNWtltk と SUNWdtcor パッケージがインストールされていることを確認します。


    注意 – 注意 –

    下記の /etc/inetd.conf は、SUNWdtcor Solaris パッケージによってインストールされます。システムに SUNWtltk がインストールされていないときは、SUNWtltk のインストール前に SUNWdtcor があることを確認してください。Solaris 1.0 (SunOS 4.0/4.1 またはその互換) オペレーティングシステムを実行しているマシンに、Solaris 7 (SunOS 5.7 またはその互換) サーバーをコピーしないでください。


  3. /etc/inetd.conf ファイルに次の行があることを確認してください。


    100083/1 tli rpc/tcp wait root /usr/openwin/bin/rpc.ttdbserverd

    rpc.ttdbserverd がないことがわかっても、pkgadd(1M) を使って SUNWtltlk と SUNdtcor パッケージを追加すればインストールできます。これらのパッケージを追加すれば、inetd で下記の構成ファイルを再読み取りできます。


    # ps -ef | grep inetd
    # kill -HUP inetd-pid
    

    注 –

    inetd-pidps リストからのものです。


rpc.ttdbserverd がシステム上で動作していることを確認

特定のシステムで ToolTalk サーバーが実際に動作しているかどうかを知るには、次のように rpcinfo(1M) コマンドで確認できます。


% rpcinfo -T tcp -t <hostname> 100083
program 100083 version 1 ready and waiting
%

注 –

hostnamehostname(1) からのものです。


Solaris CD-ROM

Solaris CD-ROM から ToolTalk ソフトウェアパッケージをインストールするには、pkgadd コマンドを使用します。ToolTalk ソフトウェアは SUNWtltk、開発者用パッケージ名は SUNWtltkd、マニュアルページのパッケージ名は SUNWtltkm です。

新しい ToolTalk データベースサーバーの実行

新しいバージョンの ToolTalk データベースサーバーが一度でもマシン上で実行されると、ToolTalk データベースサーバーの以前のバージョンには戻すことはできません。ToolTalk データベースサーバーの以前のバージョンを実行しようとすると、次のエラーメッセージが表示されます。


rpc.ttdbserverd[pid #:  rpc.ttdbserverd version (1.0.x) 
does not match the version (1.1) of the database tables. 
Please install an rpc.ttdbserverd version 1.1 (or greater).

ToolTalk データベースサーバーのリダイレクト

データベースのホストマシンとファイルシステムのパーティションは、両方ともリダイレクトできます。

ホストマシンのリダイレクト

ToolTalk クライアントは、データベースのホストマシンをリダイレクトする際に、ToolTalk データベースサーバーを実行していないマシンから ToolTalk データにアクセスすることが物理的に可能になります。ホストマシンをリダイレクトするには、ToolTalk クライアントがアクセスするマシンのホスト名をマップする必要があります。データベース照会を行う ToolTalk クライアントを実行しているマシン上で、次の手順を実行します。

  1. hostname_map ファイルを作成します。

    たとえば、次のように作成します。


    # Map first host machine
    oldhostname1  newhostname1
     
    # Map second host machine
    oldhostname2  newhostname2

    oldhostname は ToolTalk クライアントがアクセスしなければならないマシン名、newhostname は ToolTalk データベースサーバーを実行しているマシン名です。

  2. ToolTalk 型データベースが格納されているのと同じ場所にファイルを格納します。

    マップファイルは、ToolTalk 型データベースと同じ優先順位を持ちます (詳細は、tt_type_comp(1) のマニュアルページを参照してください。)


    注 –

    TT_HOSTNAME_MAP 環境変数で定義したファイルは、ユーザーデータベース内のマップより優先順位が高くなります。


    マップファイルは、クライアントが tt_open 呼び出しを行う際に、ToolTalk クライアントが読み取ります。ホストリダイレクションの詳細は、hostname_map(4) のマニュアルページを参照してください。

ファイルシステムのパーティションのリダイレクト

ファイルシステムのパーティションをリダイレクトする際に、ToolTalk データベースは、異なるファイルシステムのパーティションに物理的にアクセスすることによって、ToolTalk データを読み取り専用ファイルシステムのパーティションに対して論理的に読み取ったり書き込んだりできます。ファイルパーティションをリダイレクトするには、ToolTalk データベースが書き込みを行うパーティションをマップする必要があります。ToolTalk データベースサーバーを実行しているマシン上で、次の手順を実行します。

  1. partition_map ファイルを作成します。

    たとえば、次のように作成します。


    # Map first partition
    /cdrom  /usr
     
    # Map second partition
    /sr0/export/home  /export/home

    これによって、読み取り専用パーティション /cdrom を読み取り書き込みパーティション /usr にマッピングし、読み取り専用パーティション /sr0/export/home を読み取り書き込みパーティション /export/home にマッピングします。

  2. ToolTalk 型データベースが格納されているのと同じ場所に、マッピングファイルを格納します。


    注 –

    TT_PARTITION_MAP 環境変数で定義したファイルパーティションは、このマッピングファイルで定義したファイルパーティションより優先順位が高くなります。


    マッピングファイルは、ToolTalk データベースサーバーの起動時、または ToolTalk データベースサーバーが USR2 シグナルを受信するときに読み取られます。パーティションのリダイレクションに関する詳細は、partition_map(4) のマニュアルページを参照してください。