mDNkit のコンパイルおよびインストール方法について解説します。 ここではソースからのインストール方法について説明します。 バイナリパッケージの配布も予定されていますが、 それらのインストール方法に関してはそれぞれのパッケージを参照してください。
本ドキュメントでは UNIX 用のコンパイルとインストール方法について 説明します。Windows 用の mDN Wrapper のインストール 方法に関しては mDN Wrapper のセットアップの 項をご覧ください。
ソース配布からのインストール手順はおよそ次のようになります。
インストールの後は、DNS サーバの設定 および mDNkit の設定 、さらに mdnsproxy を使用する場合には mDNS Proxy Server の設定 を参照して設定を行ってください。
ソース配布に含まれているパッチを適用する場合には、 それぞれ次の手順にしたがってください。
mDNkit は EUC や SJIS など様々なローカルエンコーディングで
記述されたドメイン名のエンコーディングを変換するために、汎用の
コードセット変換ユーティリティである iconv()
を使用します。
そこで、FreeBSD など iconv()
が標準で組み込まれていない
システムでは、
mDNkit のインストールに先立って iconv()
をインストール
しなければなりません。また、mDNkit は iconv()
が
UTF-8 エンコーディングをサポートしていることを要求します。システム付属の
iconv()
が UTF-8 をサポートしていない場合にはやはり
外部のパッケージをインストールする必要があります。
iconv()
のフリーな実装としては、例えば GNU libiconv
があり、ソースを上記のページから入手することができます。
これは LGPL に基づいたフリーソフトウェアで、多くの UNIX 系 OS の
もとで動作します。このパッケージのインストール方法については、上記ページか、
あるいはソース配布に含まれる INSTALL.generic
ファイルをご覧ください。
mDNkit には BIND 9 に対するパッチが含まれており、これを適用することで BIND 9 に含まれる dig や nslookup 等のツールに多言語ドメイン名を直接 指定することができるようになります。
これらのツールを利用したい場合にはあらかじめ BIND 9 のソースを用意して ください。 mDNkit に含まれるパッチは BIND 9.1.3 および 9.2.0 用のものです。 ソースは以下の場所からダウンロードすることができます。
mdnsproxy を利用してクライアントアプリケーションが 多言語ドメイン名を使用できるようにするためには、 名前解決を行うリゾルバライブラリを 8ビットスルーにする必要があります。
mDNkit にはこのために BIND 8.2.3 および 8.3.1 を 8ビットスルーにする パッチが含まれています。パッチを適用した BIND 8 を使用したい場合には あらかじめこのバージョンのソースを用意してください。 ソースは以下の場所からダウンロードすることができます。
Web のキャッシュサーバである Squid は、そのままでは多言語ドメイン名が 入力されるとそれをエラーにしてしまい、使用することができません。 このためmDNkit には Squid-2.4.STABLE1 を 8ビットスルーにするパッチが含まれています。Squid を多言語ドメイン名で使用 したい場合にはこのソースも用意してください。
mDNkit に関する最新情報は以下の場所から入手可能で、 最新の配布ソースのダウンロードもできます。
入手した mDNkit の配布ソースを展開します。
配布ソースのファイル名を mdnkit-X.Y.tar.gz
とすると
次のようにして展開できます。
% gunzip mdnkit-X.Y.tar.gz
% tar -xf mdnkit-X.Y.tar
展開すると、mdnkit-
X.Yというディレクトリが
作られますので、そこに移動してください。
% cd mdnkit-X.Y
以降の説明では、このディレクトリを $MDNTOP
という名前で
参照します。環境変数 $MDNTOP
を設定しておくと便利でしょう。
% setenv MDNTOP `pwd` (csh 系のシェルの場合)
% MDNTOP=`pwd`; export MDNTOP (sh 系のシェルの場合)
configure
実行まず mDNkit の本体である、
のコンパイルを実行します。
まず、mDNkit のトップディレクトリ
($MDNTOP
の指すディレクトリ) に移動し、
configure
スクリプトを実行します。
configure
はヘッダファイルやライブラリの有無など、システム毎の
特徴を調べ、コンパイル環境を適切に設定するためのツールです。
% cd $MDNTOP
% ./configure
システムに iconv()
が組み込まれていて、かつコンパイル時に
特別なオプションを使用しないなら上記のようになにも引数を指定せずに
実行すればよいのですが、そうではない場合、オプションや環境変数で
configure
の動作を変えることができます。
configure
に指定できるオプションの中で、重要と思われるもの
記します。
--prefix=PREFIX
/usr/local
です。
--with-libiconv=LIBICONV_PREFIX
--prefix=
PREFIXから導出されます) を指定したもの
と見なされます。
--with-libiconv
は GNU libiconv 用の短縮形のオプションで
これは以下と等価になります。--with-libiconv=/usr/local
短縮形のオプション (--with-iconv-include='-I/usr/local/include'
--with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv'
--with-libiconv
) と通常用の
オプション (--with-iconv-include
, --with-iconv
)
を両方とも指定した場合は、通常用のオプションほうが優先されます。
--with-iconv-include=ICONV_INCDIR
iconv.h
が置かれている場合、次のようにしてそのディレクトリを指定します。
--with-iconv-include=/usr/local/include
--with-iconv=ICONV_LIB
iconv()
が組み込まれていない、あるいは
システムの iconv()
を使いたくないなどの理由で新たに
iconv()
のパッケージをインストールした場合に、このオプションを
用いて iconv()
のライブラリを指定します。ICONV_LIB
でライブラリを指定します。ライブラリファイルをフルパスで指定するか、
あるいは C コンパイラに与えるオプションの形式で指定してください。
例えば
のように指定します。iconv が共有ライブラリになっている場合には、--with-iconv="-L/usr/local/lib -liconv"
-R
オプションも指定して
とする必要があるかもしれません。--with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv"
--with-iconv-sofile=
SOFILE_PATH
--with-iconv
オプションの記述を基にパス名を
検索しますが、これに失敗したときに、以下のように共有ライブラリを
指定することができます。
--with-iconv-sofile=/usr/local/lib/libiconvv.so.2.0
--with-utf8=UTF8_NAME
iconv()
に指定する場合、
mDNkit はデフォルトで UTF-8
というエンコーディング名称を
使用します。もし UTF-8 エンコーディングを指定するのに UTF-8
以外のエンコーディング名称を使用する必要があれば、このオプションで
UTF8_NAME にその名称を指定します。
前準備にあげた iconv
のパッケージ
を使用する場合にはこのオプションの指定は不要です。
configure
のオプション
それほどよく使うわけではありませんが、configure
には
前項に挙げたもの以外にも様々なオプションが用意されています。
必要に応じて指定して下さい。
--with-preference=PREFERENCE
mdn.conf.sample
) のデフォルト設定を PREFERENCE
向けのものにします。
またこのオプションを指定すると、デフォルトの設定ファイル
(mdn.conf
) が (インストール先に既に存在していなければ)
インストールされます。インストールされるファイルの内容は
サンプル設定ファイルと全く同一です。
jp
のみです。
--with-punycode-prefix=Punycode_PREFIX
"zq--"
が接頭辞として定義されます。
--with-race-prefix=RACE_PREFIX
--with-dude-prefix=DUDE_PREFIX
--exec-prefix=EXEC_PREFIX
--prefix=PREFIX
によって指定可能、PREFIX のデフォルトは
/usr/local
) になります。
--sbindir=SBINDIR
EXEC_PREFIX/sbin
にインストール
されます。
--bindir=BINDIR
EXEC_PREFIX/bin
にインストール
されます。
--libdir=LIBDIR
EXEC_PREFIX/lib
にインストール
されます。
--includedir=INCDIR
PREFIX/include
にインストール
されます。
--sysconfdir=SYSCONFDIR
PREFIX/etc
にインストールされます。
--mandir=MANDIR
PREFIX/man
です。実際にはこの
ディレクトリのサブディレクトリの man1
や man8
にインストールされます。
--datadir=DATADIR
PREFIX/share
です。
実際にそのサブディレクトリの DATADIR/mdnkit
に
幾つかのデータファイルがインストールされます。
--localstatedir=LOCALSTATEDIR
--logdir=LOGDIR
mdnsproxy
のログファイルを出力
する標準のディレクトリを指定します。LOGDIR のデフォルトは
LOLOCALSTATEDIR/mdnsproxy
で、
LOLOCALSTATEDIR のデフォルトは PREFIX/var
です。
--enable-debug
no
) になっています。
--enable-shared
yes
) に
なっています。
--enable-static
yes
) に
なっています。
configure には他にもオプションがありますが、残りは mDNkit で使用する ことは滅多にないと思いますので、説明は省きます。
% ./configure --help
で指定可能なオプションの一覧を表示させることができます。
configure
に関係する環境変数
configure
に関係する環境変数は、次の通りです。
これらについても、もし必要であれば指定して下さい。
CC
CFLAGS
-O3
を指定することで最適化
レベル 3 でコンパイルが行われるようになります。
具体的には、csh 系のシェルの場合には
また sh 系のシェルの場合には% setenv CFLAGS -O3
とします。% CFLAGS=-O3; export CFLAGS
configure
を実行することにより、あなたのシステム環境に合わせて
調整された Makefile
その他のファイルが生成されます。
configure
実行によって、システム環境
に合った Makefile が生成されているので、コンパイルはトップディレクトリ
($MDNTOP
の指すディレクトリ) で
make
コマンドを実行するだけです。
% make
コンパイルが終了したら、実行ファイルなどのインストールを行います。 インストールの前にスーパーユーザになってください。
% su
あとは make install
を実行すれば、必要なファイルが
システムにインストールされます。
# make install
インストールされるファイルは以下の通りです。
次の実行ファイルがインストールされます。
mdnsproxy
mdnconv
runmdn
クライアントを再コンパイルすることなしに多言語ドメイン名の名前解決
機能を付加するコマンドです。
mdnsproxy
は、デフォルトでは /usr/local/sbin
に
インストールされます。
インストール先を変えるには
configure
の --sbindir
オプションを使用します。
mdnconv
および runmdn
は、
デフォルトでは /usr/local/bin
にインストールされます。
インストール先を変えるには
configure
の --bindir
オプションを使用します。
以下のオンラインマニュアルがインストールされます。
mdnconv.1
runmdn.1
libmdn.3
, libmdnlite.3
mdn.conf.5
mdn.conf.5
の
オンラインマニュアルです。
mdnsproxy.8
デフォルトでは
/usr/local/man/man1
(mdnconv.1
、
runmdn.1
)、
/usr/local/man/man3
(libmdn.3
、
libmdnlite.3
)、
/usr/local/man/man5
(mdn.conf.5
)、
/usr/local/man/man8
(mdnsproxy.8
)
にそれぞれインストールされます。
インストール先を変えるには、configure
の
--mandir
オプションを使用します。
以下の設定ファイルあるいはそのサンプルファイルがインストールされます。
mdnsproxy.conf.sample
mdn.conf.sample
mdn.conf
configure
に --with-preference
オプションを
指定し、かつインストール先に同じ名前のファイルが存在しない時にのみ
インストールされます。
いずれもデフォルトでは /usr/local/etc
にインストールされます。
インストール先を変えるには、configure
の
--sysconfdir
オプションを使用します。
以下のライブラリがインストールされます。
libmdn
libmdnlite
libmdn
の軽量版です。
libmdn
から、ローカルエンコーティングと UTF-8 との
間のコード変換機能部分を除いてありますが、その他はすべて
libmdn
と同じです。
libmdnres
いずれのライブラリもデフォルトでは /usr/local/lib
に
インストールされます。
インストール先を変えるには
configure
の --libdir
オプションを使用します。
libmdn のヘッダファイルがインストールされます。
デフォルトでは /usr/local/include
の下に mdn
という
ディレクトリが作られ、その下にインストールされます。
インストール先を変えるには、configure
の
--includedir
オプションを使用します。
展開したソースの中の
$MDNTOP/patch/bind9/bind-9.1.3-patch
が
BIND 9.1.3 に対するパッチ、
$MDNTOP/patch/bind9/bind-9.2.0-patch
が
BIND 9.2.0 に対するパッチです。
パッチの当て方はこのファイルの先頭にも書いてありますが、簡単に紹介 すると、次のようになります。 (以下、BIND 9.2.0 を例にとって説明します。BIND 9.1.3 の場合は、 バージョン番号のところを適宜読み替えてください。)
README
というファイルがあるディレクトリです) に移動します。
% cd /somewhere/.../bind-9.2.0
patch
コマンドを使用してソースにパッチを当てます。
% patch -p0 < $MDNTOP/patch/bind9/bind-9.2.0-patch
パッチを当てたあとは BIND 9 のソース中の README.mdnkit
を
ご覧ください。コンパイル、インストール方法などが書かれています。
パッチを当てた BIND 9 をコンパイルするには、あらかじめ mDNkit を コンパイルおよびインストールしておいてください。
展開したソースの中の
$MDNTOP/patch/bind8/bind-8.2.3-patch
が
BIND 8.2.3 に対するパッチ、
$MDNTOP/patch/bind8/bind-8.3.1-patch
が
BIND 8.3.1 に対するパッチです。
パッチの当て方はこのファイルの先頭にも書いてありますが、簡単に紹介すると、 次のようになります。(以下、8.3.1 を例にとって説明します。8.2.3 の場合は バージョン番号のところを適宜読み替えて下さい。)
src
というサブディレクトリがあるディレクトリです) に移動します。
% cd /somewhere/.../bind-8.3.1
patch
コマンドを使用してソースにパッチを当てます。
% patch -p0 < $MDNTOP/patch/bind8/bind-8.3.1-patch
パッチを当てたら、あとは通常の BIND のインストール方法にしたがって
コンパイルとインストールを行ってください。インストール方法は BIND の
ソース中の src/INSTALL
に書かれています。
BIND 8 用のパッチは BIND を単に 8ビットスルーにするだけで、mDNkit の ライブラリ等は使用しません。したがって mDNkit 本体とは独立にコンパイルおよび インストールすることができます。
展開したソースの中の $MDNTOP/patch/squid/squid-2.3.STABLE3-patch
が
Squid 2.3.STABLE3 に対する 8ビットスルーパッチです。
パッチの当て方はこのファイルの先頭にも書いてありますが、簡単に紹介すると、
次のようになります。
README
ファイルがあるディレクトリです) に移動します。
% cd /somewhere/.../squid-2.3.STABLE3
patch
コマンドを使用してソースにパッチを当てます。
% patch -p1 < $MDNTOP/patch/squid/squid-2.3.STABLE3-patch
パッチを当てたら、あとは通常の Squid のインストール方法にしたがって
コンパイルとインストールを行ってください。インストール方法は
Squid のソースに含まれる INSTALL
ファイルに書かれています。
Squid 用のパッチも BIND 8 用のパッチと同様単に 8ビットスルーにするだけで、 mDNkit のライブラリ等は使用しません。 したがって mDNkit 本体とは独立にコンパイルおよび インストールすることができます。