やはり二種類の場合を考える必要があります。
最初の場合には二つの選択があります。
libnsl.so
を用いるようにリンクしなおします(あるいは
libnsl.a
を使ってスタティックリンクします)。具体的には、
LIBS=-lnsl
という行を Makefike
に付け加え、リンクしたいネットワークサービス
ライブラリを指定します。基本的にはすべてのネットワークデーモンと
login
プログラムを再コンパイルする必要があります。
libc
を再コンパイルし、 libc
ライブ
ラリに NYS クライアントとしてのライブラリ関数を入れることもできます。
その後スタティックリンクされたプログラムをリンクしなおします(ダイナミッ
クリンクを用いたプログラムは自動的に新しいバージョンの libc
を使
うようになります。この作業の詳細は
NYS 入り libc を作る
の節を参考にして下さい。二番めに相当する場合、つまり NIS サーバが無い場合は
trad-NIS のセットアップ
の章で説明した場合のように、 ypserv
のようなうな NIS サーバプログ
ラムも必要になります。またネットワーク上のどの計算機を NIS のマスター
サーバにするのかを決めなくてはなりません。前にも書きましたが、スレーブ
サーバを少なくとも一台は設定したほうが良いということも頭に入れておいて
下さい。
まず NYS ライブラリ libnsl.so
を入手し、コンパイルする必要があり
ます。 DLL を作るための環境が手元にない場合は、コンパイル済の共有ライ
ブラリ、スタティックライブラリ、スタッブライブラリーも手に入れて下さい。
これらは以下に示すサイトに置いてあります。コンパイル済みのライブラリは
配布されているソースよりもバージョンの古い可能性があることに注意して下
さい。
NYS ライブラリ(ソース/コンパイル済のもの)は以下のサイトにあります。
ここには nys-0.27.?.tar.gz
という名前でソースファイルが置いてあり
ます。
ここにはバイナリの libnsl.so.1.0.a26
が置かれています。
コンパイル済みの login
と su
コマンドが置いてあるサイトです。
それぞれ login
、 su
というファイルが置いてあります。
同様に設定ファイルの例が以下から手に入ります。
*conf
という名前で置いてあります。
nsl ライブラリのコンパイルは付属のドキュメントの指示に従って行います。
共有ライブラリをコンパイルしたい場合には、 DLL ツールを標準的な場所である
/usr/dll
に置いて下さい。 DLL のツールは
tools-2.11.tar.gz
というパッケージになっており、多くのサイトから
手に入れることができます。
訳注: ELF ライブラリを作成する場合は DLL ツールは不要です。 GCC-HOWTO などを参考にしてください。
trad-NIS と異なり、 NIS クライアントの場合には難しい設定はあり
ません。 NIS 設定ファイル(/etc/yp.conf
)を書き換えて、正しい
サーバから情報をもらうようにするだけです。ネームサービススイッチの設定
ファイル (/etc/nsswitch.conf
)も正しく設定する必要があります。
ソースコードに付属している例を参照して下さい。
ネットワークサービススイッチファイル(/etc/nsswitch.conf
)は、
情報が要求された時にそれを検索する順序を指定するファイルです。
/etc/host.conf
がホストの検索順序を決定するファイルであるのと
同じことです。詳しくはソースコードに付属の例をご覧下さい。例えばこのファ
イル中では以下のような指定が可能です。
hosts: files nis dns
これはホストを探す場合に、まずローカルの /etc/hosts
を検索し、
次に NIS で検索し、それでも見つからない場合は、DNS(ドメインネームサー
ビス)で検索することを表しています。以上の検索で見つけられない場合には、
エラーが返されます。
訳注: nis
や dns
を先にするときは、サーバが落ちていたときな
どのために
hosts: nis [NOTFOUND=return] dns [NOTFOUND=return] files
というオプションをつけておくと良いでしょう。
libc
ライブラリの作成 それぞれのバイナリを NYS ライブラリ libnsl.so
を用いてリンクしな
おす代わりに、 NYS を理解する libc
を作ることもできます。つまり新
しい libc
をコンパイルして、できたライブラリを現在の
/lib/libc.so.x.y.z
と置き換えれば、すべての(スタティックリンク
ではない)プログラムが NYS を理解するようになります。
この NYS を libc
にマージする作業によって、 trad-NIS では
得られなかった利点も得られます。 /etc/nisswitch.conf
の指定に
よって shadow password を透過的にサポートできるようになるのです。
以下のステップを踏めば簡単に NYS 込みの libc
を作ることができます。
libc
のソースを取ってきます。
libc-linux
のソースディレクトリ下に展開します。
現在の NYS の最新バージョンは nys-0.27.4.tar.gz
です。
訳注:最近の libc には nys のコードがすでに含まれています(5.2.18 で確
認)ので上記ファイルを入手、展開する必要はありません。ただし配布時の標
準のままでコンパイルすると、作成される libc に nys のコードは入らない
ので、以下の ./configure
時の手続きは必要です。
./configure
を実行し、最初の質問に
"n"
と答えて下さい。
Values correct (y/n) [y] ?
以降、質問に適宜答えて行き、最後の質問
Build a NYS libc from nys-0.27 (y default) ?
に "y"
と答えて下さい。
make
を実行します。コンパイルが終了すると、libc.so.4.5.26
といったような名前のファイ
ルが jump/libc-nys
ディレクトリにできているはずです。このライ
ブラリを /lib
にインストールするにあたっては、現存のライブラ
リのバージョン番号よりも進めた番号を付けることをお薦めします。
"a"
を付けるだけでも良いでしょう。例えば以下のように
します。
% cp jump/libc-nys/libc.so.4.5.26 /lib/libc.so.4.5.26a
解りやすくしたければ "nys"
を付けるのも良いでしょう。
コピーしたら
% ldconfig
を実行します。するとキャッシュがリセットされ、新しいライブラリが利用さ
れるようになります。ダイナミックリンカの情報は "ldconfig
-p"
を実行することによって確認できます。
これで基本的にはおわりです。すべてのプログラムが NYS を理解するように
なったはずです。ただし login
プログラムは通常スタティックにリンク
されており、従って NYS libc
を作るだけではだめなことに注意して下
さい。これを解決するには login
を -static
フラグなしでコンパ
イルするか、 libnsl.a
ライブラリをリンクするようにしてスタティッ
クリンクするようにして下さい。
訳注:最近は login
もダイナミックリンクになっていることが多いようです。
% ldd /bin/login
などで確認してください。