Solaris ネーミングの管理

Makefile の更新と使用

/var/yp で提供されたデフォルトの Makefile を更新することにより、NIS 管理者のニーズを満たすことができます。今後に備えて、必ずこのオリジナルの Makefile のコピーを保存しておいてください。Makefile を使用すると、マップの追加または削除、および一部のディレクトリ名の変更ができます。

新しい NIS マップを追加するには、マップの ndbm ファイルのコピーをドメインに存在する各 NIS サーバーの /var/yp/domainname ディレクトリに転送する必要があります。この転送は通常、Makefile が自動的に行います。どの NIS サーバーがマップのマスターサーバーであるかを決定したら、マップを容易に作成し直せるようにマスターサーバーの Makefile を更新してください。異なる複数のサーバーを異なる複数のマップのマスターサーバーとして設定することも可能ですが、このようにするとたいていの場合、管理上の混乱を招きます。したがって、1 つのサーバーだけをすべてのマップのマスターサーバーとして設定することをお勧めします。

一般に、人間が判読可能なテキストファイルは、makedbm に対する入力として適したものにするために awksedgrep でフィルタリングされます。デフォルトの Makefile を参照してください。make コマンドの概要については、make(15) のマニュアルページを参照してください。

make が認識する従属性の作成方法を決定する際には、Makefile にすでに備わっているメカニズムを使用してください。make では従属ルール内の行の始まりにタブが存在するか否かが重要であり、タブが存在しないというだけでエントリが無効になることがあるので注意してください。

Makefile エントリの追加

Makefile にエントリを追加するには、以下の作業を行ってください。

たとえば、Makefile をオートマウンタ入力ファイルで動作させるには、auto_direct.time および auto_home.time マップを NIS データベースに追加してください。

NIS データベースにこれらのマップを追加するには、以下の手順に従ってください。

  1. all という語で始まる行に、追加したいデータベース名 (1 つまたは複数) を追加します。


    all: passwd group hosts ethers networks rpc services protocols ¥
    netgroup bootparams aliases netid netmasks ¥
    auto_direct auto_home auto_direct.time auto_home.time

    エントリの順序は任意ですが、継続行の始まりの空白はスペースではなくタブにしてください。

  2. Makefile の終わりに以下の行を追加します。


    auto_direct: auto_direct.time
    auto_home: auto_home.time 
  3. ファイル中央に auto_direct.time エントリを追加します。


    auto_direct.time: $(DIR)/auto_direct
    @(while read L; do echo $$L; done < $(DIR)/auto_direct
    $(CHKPIPE)) | ¥ (sed -e "/^#/d" -e "s/#.*$$//" -e "/^ *$$/d"
    $(CHKPIPE)) | ¥ $(MAKEDBM) - $(YPDBDIR)/$(DOM)/auto_direct;
    @touch auto_direct.time;
    @echo "updated auto_direct";
    @if [ ! $(NOPUSH) ]; then $(YPPUSH) auto_direct; fi
    @if [ ! $(NOPUSH) ]; then echo "pushed auto_direct"; fi
    • CHKPIPE は、次のコマンドに結果を渡す (パイピングする) 前に、パイプ (|) の左側の動作が正しく行われたことを確認します。パイプの左側の動作が正しく行われなかった場合は、NIS make terminated というメッセージが表示されてプロセスは終了します。

    • NOPUSH は、Makefileyppush を呼び出して新しいマップをスレーブサーバーに転送することを防止します。NOPUSH が設定されていない場合は、転送は自動的に行われます。

    継続行の始まりにある while ループは、バックスラッシュで拡張された行を入力ファイルから削除するためのものです。sed スクリプトはコメント行および空行を削除し、makedbm に出力を渡します。

    他のすべてのオートマウンタマップ (auto_home や他のデフォルトでないマップなど) でも、同じ手順が必要となります。

  4. make を実行します。


    # make name
    

    name は、作成するマップ名です。たとえば、auto_direct などです。

Makefile エントリの削除

Makefile に特定データベースのマップを作成しない場合は、Makefile を以下のように編集してください。

  1. all ルールからデータベース名を削除します。

  2. 削除するデータベースのデータベースルールを削除またはコメントアウトします。

    たとえば、hosts データベースを削除するには、hosts.time エントリを削除します。

  3. time ルールを削除します。

    たとえば、hosts データベースを削除するには、hosts: hosts.time エントリを削除します。

  4. マスターサーバーとスレーブサーバーからマップを削除します。

Makefile のマクロおよび変数の変更

Makefile の先頭で定義されている変数の設定値の変更は、等号 (=) の右側の値を変更するだけで行うことができます。たとえば、マップを作成するための入力として、/etc に存在するファイルではなく別のディレクトリに存在するファイル (たとえば、/var/etc/domainname など) を使用する場合は、DIR 値を DIR=/etc から DIR=/var/etc/domainname に変更してください。また、PWDIR 値を PWDIR=/etc から PWDIR=/var/etc/domainname に変更することもできます。

変数は次のとおりです。