インストール

概要

NSDのインストールは、configureで、次のmakeで反映されるパラメータの設定をし、makeでコンパイルとスクリプトなどへのパラメータの埋め込みを行い、make installでターゲットのディレクトリにインストールする、という流れで行います。

configureの引数など

まずは配布物のdoc/READMEに目を通しましょう。
configureに与える引数、環境変数については、READMEの2.2 Configuring NSDというセクションに書かれています。以下では一般的に使いそうな物だけを取り上げます。
--enable-root-server
NSDは、誤設定により'.'(root)ゾーンのauthorityを持ってしまうことを防ぐため、デフォルトでは'.'ゾーンのネームサービスは提供できないようになっています(未検証)。 The Internetとは独立した、閉じた名前空間を構築するためなどの目的で、今からインストールするNSDで'.'ゾーンのネームサービスを提供する必要がある場合には、--enable-root-serverを与えます。
--enable-bind8-stats
ログにBIND8形式の統計情報を出力します。出力間隔はnsdの起動時オプション-sあるいはnsd.confのstatistics:オプションで指定します。
--with-configdir=DIR
nsd.confなどの設定ファイルを置くディレクトリのデフォルト値をDIRに設定します。--with-configdirを指定しないと、/etc/nsdになります。NSDではBINDとは異なり、nsdに起動時オプション-tを与えてchroot()する場合でも、各種のパス名を指定するconfigureのオプションには、chroot()前のパスを指定することに注意して下さい。
--with-nsd_conf_file=path
nsd.confのパスのデフォルト値をpathに設定します。--with-nsd_conf_fileを指定しないと、configdirの下のnsd.confというファイル名になります。実行時にはnsdの起動時オプション-cで指定できます。
--with-pidfile=path
nsdが書き出す.PIDファイルのバスのデフォルト値をpathに設定します。--with-pidfileを指定しないときのデフォルトのパス名は、OSに依存します。実行時にはnsdの起動時オプション-Pあるいはnsd.confのpidfile:オプションで指定できます。
--with-dbfile=path
nsd.dbのバスのデフォルト値をpathに設定します。--with-dbfileを指定しないと、configdirの下のnsd.dbというファイル名になります。実行時にはnsdの起動時オプション-fあるいはnsc.confのdatabase:オプションで指定できます。
--with-zonesdir=dir
この引数は、doc/READMEにはnsd.confにzonefile:オプションを相対パスで設定したときの起点となるディレクトリのデフォルト値をdirに設定する、と書かれていますが、NSD 3.0.3の時点ではmakeで生成される結果には反映されず、nsd.confのzonefile:オプションにファイル名を絶対パスで指定するか、実行時にzonecの起動時オプション-dあるいはnsd.confのzonesdir:オプションで指定することが必須のようです。この問題はNSD 3.0.4で修正されました。
--with-user=user
nsdが実行時にrootの特権を放棄するためにsetuid()する非rootのユーザのデフォルト値をuserに設定します。--with-userを指定しないと、nsdというユーザ名になります。実行時には起動時オプション-uあるいはnsd.confのusername:オプションで指定できます。vipw(8)などでこのユーザのアカウントを作成しておく必要があります。
--with-facility=facility
nsdがsyslog経由で出力するメッセージのfacilityのデフォルト値をfacilityに設定します。--with-facilityを指定しないと、LOG_DAEMONになります。
--with-difffile=path
nsdがセカンダリとして動作しているゾーンについて、ゾーン転送で取得したデータのジャーナルのパスのデフォルト値をpathに設定します。--with-difffileを指定しないと、configdirの下のixfr.dbというファイル名になります。実行時にはnsd.confのdifffile:オプションで指定できます。NSD 3.0.3の時点では、この引数はconfigure --helpでは表示されるもののdoc/READMEには記述がありません。
--with-xfrdfile=path
nsdがセカンダリとして動作しているゾーンについて、ゾーン転送のタイミング関係の情報を保存するファイルのバスのデフォルト値をpathに設定します。--with-xfrdfileを指定しないと、configdirの下のxfrd.stateというファイル名になります。実行時にはnsd.confのxfrdfile:オプションで指定できます。この引数もNSD 3.0.3の時点ではconfigure --helpでは表示されるもののdoc/READMEには記述がありません。

個人的tips

configureの引数の与え方

引数を色々試しながら何度もconfigureを実行したり、バージョンアップ(というのは和製英語で、正しくは"up grade"だそうです:元同僚の受け売り)の際に、前のバージョンと同じ設定でコンパイルするのが楽になるように、do-configure.shという名前で以下のようなshスクリプトを作ってトップディレクトリに置き、configureを直接ではなく、このスクリプト経由で起動しています。


#!/bin/sh

cwd=`pwd`
version=`basename $cwd`
exec `dirname $0`/configure \
        --prefix=/proj/$version \
        --with-configdir=/proj/nsd3/etc \
        --with-nsd_conf_file=/proj/nsd3/etc/nsd.conf \
        --with-pidfile=/proj/nsd3/var/run/nsd.pid \
        --with-dbfile=/proj/nsd3/var/db/nsd.db \
        --with-difffile=/proj/nsd3/var/db/ixfr.db \
        --with-xfrdfile=/proj/nsd3/var/db/xfrd.state \
        --with-facility=LOG_LOCAL3


もっとうまい手があれば教えてください。>autoconf遣いなひと

具体的な引数の値

--prefix

NSDの配布物は展開するとnsd-3.0.3のようなディレクトリが展開されるので、上で示したdo-configure.shでは、$versionにnsd-3.0.3のようなバージョン番号を含んだ名前が格納されます。したがって、--prefixには/proj/nsd-3.0.3というディレクトリ名が与えられます。 この設定でコンパイル/インストールすると、バージョンアップ(というのは和製英語で…以下、自粛)の際に旧バージョンの実行ファイルを温存でき、バージョンアップ(もういい)してみたらトラブルが発生したので急いで切り戻したい、という場合に、簡単迅速に対応できます。ただし、これだけでは不便なので、そのときに使っている/proj/nsd-バージョンに/proj/nsd(バージョン番号なし)という名前でシンボリックリンクを張っています。

--with-configdir--with-nsd_conf_fileなど

個人的趣味ですが、OSの配布物からインストールされる物と自分でインストールした物は分けておきたいので、/etc/nsdではなく、別のディレクトリにしています。/usr/local/etc/nsdなんてのがありがちなディレクトリ名だと思いますが、上で示したdo-configure.shでは、動作検証、実験など用のホストの物なので、/proj以下にしています。

--with-dbfile--with-difffileなど

これも個人的趣味ですが、これらのファイルは、運用者が手動で書き込むのではなく、プログラムにより書き込まれるファイルなので、書き込みアクセスの頻度とそれが磁性体に与えるインパクト、ファイルシステムが損傷した際の被害範囲の局所化の観点から、運用者が手動で作成/編集するファイルとはファイルシステムを分離すべきだと考えています。なので、実験機ではそこまでやっていませんが、実運用に使っているサーバでは、/proj/nsd/var(に相当するディレクトリ)は別ファイルシステムをmountして、ここで挙げたファイルは、varの下に置いています。また、セカンダリのゾーンのゾーンデータファイルもシンボリックリンクを使い、実体はvarの下に置いています。

makeとmake install

configureが成功したらmakeを実行してコンパイルとスクリプトやサンプルデータなどへのパラメータの埋め込みなどを行い、suしてmake installを実行してインストールします。
アーキテクチャ|Up|設定
Copyright(c) 2006, Koh-ichi Ito, All right reserved.
Last update: $Date: 2018-10-21 16:09:48 +0900 (Sun, 21 Oct 2018) $