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 サービスファイル
すべての ToolTalk コマンドは、バージョンを出力する -v オプションをサポートしています。
ToolTalk サービスに必要なソフトウェアには、ONC RPC があります。
ここでは、ToolTalk と関連環境変数について説明します。
いくつかの ToolTalk 環境変数を設定できます。これらの変数について、表 4-2 に説明します。
表 4-2 環境変数
変数 |
説明 |
---|---|
ツールが ttsession を自動的に開始するときに、指定された標準オプションを無効にする。この変数を設定すると、すべての ToolTalk クライアントはこのコマンドを使用して、X セッションを自動的に開始させる |
|
|
|
|
|
トレースモードを使用する際に、表示する引数およびコンテキストの値の文字数を定義する。デフォルトでは最初の 40 字を表示する |
|
定義済みのファイルに範囲指定したメッセージがツールを呼び出す際に、ttsession がこの変数にパス名を設定する |
|
マップファイルを指す。定義したマップファイルは、ホストマシンのリダイレクトのために ToolTalk クライアントが読み取る |
|
マップファイルを指す。定義したマップファイルは、ファイルパーティションのリダイレクトのために ToolTalk クライアントが読み取る |
|
ttsession は、それが起動するツールにセッション識別子を通知する。この変数を設定すると、ToolTalk クライアントライブラリは、その値をデフォルトのセッション識別子として使用する。この変数に記憶された文字列は、tt_default_session_set へ渡すことができる |
|
ToolTalk クライアントライブラリに、ttsession によって起動したことを通知する。これによってクライアントは、起動が正常であったことを ttsession に確認できる |
|
|
tttrace(1) についてトレーススクリプトで指定したように、libtt がクライアントサイドのトレースを行うようにする |
tt_type_comp(1) と rpc.ttdbserverd(1M) で使用する ToolTalk 型データベースがどこに常駐するかを ToolTalk に通知する |
|
ToolTalk 型データベースの常駐場所を分類機構に通知する |
|
注 - Solaris 2.6 オペレーティング環境およびその互換バージョンのオペレーティングシステムでは、アカウントによってはこの変数が渡されない場合がある。つまり、コンソールにユーザー A またはユーザー B のスイッチユーザーとしてログオンしている場合は、通常 ttsession を自動起動する ToolTalk プログラムを実行しようとしても ttsession が自動起動しないことがある。この問題を回避するためには、この変数を手入力で設定するか、.login ファイルに含める必要がある。 |
|
|
この変数を設定すると、構築されているパス名の /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 を使用します。
#! /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 データベースサーバーは、次の 3 種類の情報を格納するのに使用します。
ToolTalk オブジェクト仕様
tt_file_join 呼び出しでファイルを結合したクライアントを持つセッションの ToolTalk セッション ID
メッセージの処置が 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 はアプリケーションプロトコルです。このエラーメッセージは、接続が異常終了したことを示します。接続の異常終了は、ネットワーク上の問題で生じることもあります。
SUNWtltk と SUNWdtcor パッケージに ToolTalk メッセージに出てくるファイルが含まれている場合は、全マシンにそれらがインストールされている必要があります。rpc.ttdbserverd がシステムにインストールされているかどうかは、次の手順で確認します。
システムにログインします。
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 またはその互換) サーバーをコピーしないでください。
/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-pid は ps リストからのものです。
特定のシステムで ToolTalk サーバーが実際に動作しているかどうかを知るには、次のように rpcinfo(1M) コマンドで確認できます。
% rpcinfo -T tcp -t <hostname> 100083 program 100083 version 1 ready and waiting % |
hostname は hostname(1) からのものです。
Solaris CD-ROM から ToolTalk ソフトウェアパッケージをインストールするには、pkgadd コマンドを使用します。ToolTalk ソフトウェアは SUNWtltk、開発者用パッケージ名は SUNWtltkd、マニュアルページのパッケージ名は SUNWtltkm です。
新しいバージョンの 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 データを読み取り専用ファイルシステムのパーティション (たとえば CD-ROM など) に対して論理的に読み取ったり書き込んだりできます。ファイルシステムのパーティションのリダイレクトは、システム管理者が、デフォルトのローカルパーティション 1 つごとに 1 つの ToolTalk データベースを常駐させる代わりに、1 つのパーティションにすべての ToolTalk データベースを常駐させたいときにも実行できます。
ToolTalk クライアントは、データベースのホストマシンをリダイレクトする際に、ToolTalk データベースサーバーを実行していないマシンから ToolTalk データにアクセスすることが物理的に可能になります。ホストマシンをリダイレクトするには、ToolTalk クライアントがアクセスするマシンのホスト名をマップする必要があります。データベース照会を行う ToolTalk クライアントを実行しているマシン上で、次の手順を実行します。
たとえば、次のように作成します。
# Map first host machine oldhostname1 newhostname1 # Map second host machine oldhostname2 newhostname2 |
oldhostname は ToolTalk クライアントがアクセスしなければならないマシン名、newhostname は ToolTalk データベースサーバーを実行しているマシン名です。
ToolTalk 型データベースが格納されているのと同じ場所にファイルを格納します。
マップファイルは、ToolTalk 型データベースと同じ優先順位を持ちます (詳細は、tt_type_comp(1) のマニュアルページを参照してください。)
TT_HOSTNAME_MAP
環境変数で定義したファイルは、ユーザーデータベース内のマップより優先順位が高くなります。
マップファイルは、クライアントが tt_open 呼び出しを行う際に、ToolTalk クライアントが読み取ります。ホストリダイレクションの詳細は、hostname_map(4) のマニュアルページを参照してください。
ファイルシステムのパーティションをリダイレクトする際に、ToolTalk データベースは、異なるファイルシステムのパーティションに物理的にアクセスすることによって、ToolTalk データを読み取り専用ファイルシステムのパーティションに対して論理的に読み取ったり書き込んだりできます。ファイルパーティションをリダイレクトするには、ToolTalk データベースが書き込みを行うパーティションをマップする必要があります。ToolTalk データベースサーバーを実行しているマシン上で、次の手順を実行します。
たとえば、次のように作成します。
# Map first partition /cdrom /usr # Map second partition /sr0/export/home /export/home |
これによって、読み取り専用パーティション /cdrom を読み取り書き込みパーティション /usr にマッピングし、読み取り専用パーティション /sr0/export/home を読み取り書き込みパーティション /export/home にマッピングします。
ToolTalk 型データベースが格納されているのと同じ場所に、マッピングファイルを格納します。
TT_PARTITION_MAP
環境変数で定義したファイルパーティションは、このマッピングファイルで定義したファイルパーティションより優先順位が高くなります。
マッピングファイルは、ToolTalk データベースサーバーの起動時、または ToolTalk データベースサーバーが USR2 シグナルを受信するときに読み取られます。パーティションのリダイレクションに関する詳細は、partition_map(4) のマニュアルページを参照してください。