選択したマップのマスターサーバーを変更するには、まず新しい NIS マスター上にマップを構築する必要があります。古いマスターサーバー名は既存のマップにキーと値のペアとして発生するので (このペアは makedbm で自動的に挿入される)、ypxfr でマップを新しいマスターサーバーにコピーしたり、コピーを新しいマスターサーバーに転送するだけでは不十分です。鍵と新しいマスターサーバー名との対応づけをし直す必要があります。マップに ASCII ソースファイルが存在する場合は、このファイルを新しいマスターサーバーにコピーします。
詳細は、Oracle Solaris 11.2 でのユーザーとプロセスのセキュリティー保護 の割り当てられている管理権利の使用を参照してください。
newmaster# cd /var/yp
そうでない場合は、ここで Makefile を編集します。この例では、sites.byname という名前のマップのエントリを追加します。
newmaster# make sites.byname
sites.byname マップを作成した Makefile のセクションをコメントアウトして、そのマップがもうそこで作成されないようにしてください。
まず、ypcat コマンドを使用して、sites.byname ファイルのコピーを分解します。次に、makedbm を使用して、分解されたバージョンを実行します。
newmaster# cd /var/yp newmaster# ypcat sites.byname | makedbm domain/sites.byname
新しいマスターサーバー上でマップが作成されたら、そのコピーをほかのスレーブサーバーに送信する必要があります。yppush を使用しないでください。これを使用すると、ほかのスレーブは新しいマスターではなく、古いマスターから新しいコピーを取得しようとします。このような動作を回避するには、一般にマップのコピーを新しいマスターサーバーから古いマスターサーバーに送り返すという方法が使用されます。これを行うには、古いマスターサーバーでスーパーユーザーになるか、同等の役割になり、次のように入力します。
oldmaster# /usr/lib/netsvc/yp/ypxfr -h newmaster sites.byname
これで、yppush を使用できます。スレーブサーバーは古いマスターサーバーを現行のマスターサーバーとして認識しているので、マップの現行バージョンを古いマスターサーバーから取得しようとします。クライアントがこの処理を行うときは、新しいマスターサーバーが現行のマスターサーバーとして指定されている新しいマップを取得します。
この方法が失敗した場合は、各 NIS サーバーに root としてログインし、上に示すように ypxfr コマンドを実行できます。