デフォルトでないマップの更新
デフォルトでないマップを更新する場合は、次の手順に従います。
対応するテキストファイルを作成または編集します。
新しいマップまたは更新されたマップを作成 (または再作成) します。マップ作成には 2 つの方法があります。
Makefile を使用する方法。デフォルトでないマップを作成するには、この方法をお勧めします。Makefile にマップのエントリが存在する場合は、make name を実行するだけです (name は作成するマップ名)。Makefile にマップのエントリが存在しない場合は、Makefile の更新と使用を参照してエントリを作成をしてください。
/usr/sbin/makedbm プログラムを使用する方法。このコマンドの詳細については、makedbm(1M) のマニュアルページに説明されています。
デフォルトでないマップを makedbm で更新する
入力ファイルが存在しない場合は、makedbm でマップを更新する方法は 2 つあります。
makedbm -u の出力先を一時ファイルに変更し、一時ファイルを更新して更新済みの一時ファイルを makedbm の入力として使用します。
makedbm -u の出力を makedbm に渡されるパイプライン内で動作させます。分解されたマップを awk、sed、または cat で更新できる場合は、この方法をお勧めします。
テキストファイルからマップを新たに作成する
テキストファイル /var/yp/mymap.asc がマスターサーバー上のエディタまたはシェルスクリプトで作成されていると仮定します。この場合、このファイルから NIS マップを作成し、作成された NIS マップを homedomain サブディレクトリに入れるには、マスターサーバー上で次のように入力してください。
# cd /var/yp # makedbm mymap.asc homedomain/ mymap |
mymap マップは現在、マスターサーバーの homedomain ディレクトリに存在しています。この新しいマップをスレーブサーバーに転送するには、ypxfr を実行してください。
ファイルをベースとしたマップにエントリを追加する
mymap にエントリを追加することは簡単です。まず、テキストファイル /var/yp/mymap.asc を更新する必要があります。対応するテキストファイルを更新しないで実際の dbm ファイルを更新した場合は、更新内容が失われます。次に、上記のように makedbm を実行してください。
標準入力からマップを作成する
オリジナルのテキストファイルが存在しない場合は、キーボードから makedbm に次のように入力して NIS マップを作成します (最後に Control + D を入力します)。
ypmaster# cd /var/yp
ypmaster# makedbm - homedomain/mymap key1 value1 key2 value2 key3 value3
標準入力から作成されたマップを更新する
後でマップを更新する必要がある場合は、makedbm でマップを分解して一時ファイルを作成できます。マップを分解して一時ファイルを作成するには、次のように入力します。
% cd /var/yp
% makedbm -u homedomain/ mymap> mymap.temp
作成される一時ファイル mymap.temp には、1 行につき 1 つのエントリが存在します。このファイルは、任意のテキストエディタで必要に応じて編集できます。
マップを更新するには、次のように入力して更新後の一時ファイルの名前を makedbm に指定します。
% makedbm mymap.temp homedomain/mymap
% rm mymap.temp
次に root になり、次のように入力してマップをスレーブサーバーに伝播します。
# yppush mymap
ここでは makedbm でマップを作成する方法について説明してきましたが、実際に行わなければならないほとんどすべての作業は、ypinit と Makefile で行うことができます。
/var/yp の Makefile を使用しても他の手順を使用しても、最終目的は同じです。正しく作成された dbm ファイルの新しいペアをマスターサーバー上の maps ディレクトリに配置しなければなりません。
スレーブサーバーの追加
NIS の実行後、ypinit に指定された初期リストに含まれていなかった NIS スレーブサーバーを作成する必要がある可能性があります。
NIS スレーブサーバーを追加する場合は、次の手順に従います。
スレーブサーバーを追加する方法
スーパーユーザーとしてマスターサーバーにログインします。
NIS ドメインディレクトリに移動します。
# cd /var/yp/domainname
# makedbm -u ypservers > /tmp/temp_file
makedbm コマンドは、ypservers を ndbm フォーマットから一時 ASCII ファイル、/tmp/temp_file に変換します。
テキストエディタで /tmp/temp_file ファイルを編集します。つまり、新しいスレーブサーバー名をサーバーリストに追加します。この後、/tmp/temp_file ファイルを保存し、閉じます。
入力ファイルに /tmp/temp_file を指定し、出力ファイルに ypservers を指定して、makedbm コマンドを実行します。
# makedbm /tmp/temp_file ypservers
makedbm は、ypservers を変換して ndbm フォーマットに戻します。
スレーブサーバーで次のように入力して、ypservers マップが正しいことを確認します (ypservers のASCII ファイルは存在しないため)。
slave3# makedbm -u ypservers
makedbm コマンドは、画面に ypservers の各エントリを表示します。
注 - ypservers にマシン名が存在しない場合は、ypservers はマップファイルの更新を受信しません。これは、yppush がこのマップでスレーブサーバーリストを調べるからです。
マスターサーバーから NIS マップのセットをコピーして新しいスレーブサーバーの NISドメインディレクトリを設定します。
この操作を行うには、新しい NIS スレーブサーバーでスーパーユーザーとなり、ypinit および ypbind コマンドを実行します。
slave3# cd /var/yp
slave3# ypinit -c
<サーバーのリスト>
slave3# /usr/lib/netsvc/yp/ypbind
slave3# /usr/sbin/ypinit -s ypmaster
ypmaster は、既存の NIS マスターサーバーのマシン名です。
ypstop を実行して、NIS クライアントとして実行されているマシンを停止します。
# /usr/lib/netsvc/yp/ypstop
ypstart を実行して、NIS スレーブサーバーのサービスを開始します。
# /usr/lib/netsvc/yp/ypstart



