インストール
mDNkit のコンパイルおよびインストール方法について解説します。 ここではソースからのインストール方法について説明します。 バイナリパッケージの配布も予定されていますが、 それらのインストール方法に関してはそれぞれのパッケージを参照してください。
本ドキュメントでは UNIX 用のコンパイルとインストール方法について 説明します。Windows 用の mDN Wrapper のインストール 方法に関しては mDN Wrapper のセットアップの 項をご覧ください。
ソース配布からのインストール手順はおよそ次のようになります。
インストールの後は、DNS サーバの設定 および mDNkit の設定 、さらに mdnsproxy を使用する場合には mDNS Proxy Server の設定 を参照して設定を行ってください。
ソース配布に含まれているパッチを適用する場合には、 それぞれ次の手順にしたがってください。
前準備
iconv のインストール
mDNkit は EUC や SJIS など様々なローカルエンコーディングで
記述されたドメイン名のエンコーディングを変換するために、汎用の
コードセット変換ユーティリティである iconv()
を使用します。
そこで、FreeBSD など iconv()
が標準で組み込まれていない
システムでは、
mDNkit のインストールに先立って iconv()
をインストール
しなければなりません。また、mDNkit は iconv()
が
UTF-8 エンコーディングをサポートしていることを要求します。システム付属の
iconv()
が UTF-8 をサポートしていない場合にはやはり
外部のパッケージをインストールする必要があります。
iconv()
のフリーな実装としては、例えば libiconv
があり、ソースを上記のページから入手することができます。
これは LGPL に基づいたフリーソフトウェアで、多くの UNIX 系 OS の
もとで動作します。このパッケージのインストール方法については、上記ページか、
あるいはソース配布に含まれる INSTALL.generic
ファイルをご覧ください。
BIND 9 ソースの入手
mDNkit には BIND 9 に対するパッチが含まれており、これを適用することで BIND 9 に含まれる dig や nslookup 等のツールに多言語ドメイン名を直接 指定することができるようになります。
これらのツールを利用したい場合にはあらかじめ BIND 9 のソースを用意して ください。 mDNkit に含まれるパッチは BIND 9.1.2 用のものです。ソースは以下の場所から ダウンロードすることができます。
BIND 8 ソースの入手
mdnsproxy を利用してクライアントアプリケーションが 多言語ドメイン名を使用できるようにするためには、 名前解決を行うリゾルバライブラリを 8ビットスルーにする必要があります。
mDNkit にはこのために BIND 8.2.3 を 8ビットスルーにする パッチが含まれています。パッチを適用した BIND 8 を使用したい場合には あらかじめこのバージョンのソースを用意してください。 ソースは以下の場所からダウンロードすることができます。
Squid ソースの入手
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 の本体である、
- MDN ライブラリ (libmdn)
- DNS プロキシサーバ (mdnsproxy)
- ゾーンマスタファイルコード変換ツール (mdnconv)
- runmdn コマンド (runmdn)
のコンパイルを実行します。
まず、mDNkit のトップディレクトリ
($MDNTOP
の指すディレクトリ) に移動し、
configure
スクリプトを実行します。
configure
はヘッダファイルやライブラリの有無など、システム毎の
特徴を調べ、コンパイル環境を適切に設定するためのツールです。
% cd $MDNTOP
% ./configure
システムに iconv()
が組み込まれていて、かつコンパイル時に
特別なオプションを使用しないなら上記のようになにも引数を指定せずに
実行すればよいのですが、そうではない場合、オプションや環境変数で
configure
の動作を変えることができます。
configure
に指定できるオプションの中で mDNkit に
直接関係するものは以下の通りです。
-
--with-iconv=LIB
- システムに
iconv()
が組み込まれていない、あるいは システムのiconv()
を使いたくないなどの理由で新たにiconv()
のパッケージをインストールした場合に、このオプションを 用いてiconv()
のライブラリを指定します。LIB で ライブラリを指定します。ライブラリファイルをフルパスで指定するか、 あるいは C コンパイラに与えるオプションの形式で指定してください。 例えば前準備に挙げたiconv()
のパッケージをインストールした場合、デフォルトでは/usr/local/lib
のlibiconv
にインストールされる ので、--with-iconv="-L/usr/local/lib -liconv"
libiconv
が共有ライブラリの時には、-R
オプションも指定して--with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv"
-
--with-utf8=NAME
- UTF-8 エンコーディングを
iconv()
に指定する場合、 mDNkit はデフォルトでUTF-8
というエンコーディング名称を 使用します。もし UTF-8 エンコーディングを指定するのにUTF-8
以外の エンコーディング名称を使用する必要があれば、このオプションで NAME にその名称を指定します。前準備にあげたiconv
のパッケージを使用する場合にはこのオプションの指定は 不要です。 -
--with-preference=PREFERENCE
- インストールするサンプル設定ファイル
(
mdn.conf.sample
) のデフォルト設定を PREFERENCE 向けのものにします。 またこのオプションを指定すると、デフォルトの設定ファイル (mdn.conf
) が (インストール先に既に存在していなければ) インストールされます。インストールされるファイルの内容は サンプル設定ファイルと全く同一です。
現在のところ、PREFERENCE として指定できるのはjp
のみです。 -
--with-race-prefix=PREFIX
- DNS プロトコル上で用いられる多言語ドメイン名のエンコーディング方式
として RACE という方式が提案されています。これは
ASCII 互換エンコーディングの 1つですが、ドメイン名に特定のプリフィックス
を付けることで通常の ASCII ドメイン名と区別することが可能になっています。
このプリフィックスは現在のインターネットドラフト
draft-ietf-idn-race-03 では
"bq--"
ですが、 将来変更される可能性があります。 変更された場合にはこのオプションを用いて正しいプリフィックスを指定して ください。 -
--with-brace-suffix=SUFFIX
- RACE と同じく DNS プロトコル上で用いられる多言語ドメイン名の
エンコーディング方式として BRACE という方式が提案されています。これも
ASCII 互換エンコーディングの 1つですが、RACE と異なり、ドメイン名に特定
のサフィックスを付けることで通常の ASCII ドメイン名と区別することが可能
になっています。このサフィックスは現在のインターネットドラフト
draft-ietf-idn-brace-00 では
"-8q9"
ですが、 将来変更された場合にはこのオプションを用いて正しいサフィックスを 指定してください。 -
--with-lace-prefix=PREFIX
--with-utf-6-prefix=PREFIX
--with-dude-prefix=PREFIX
- RACE や BRACE と同じような ASCII 互換エンコーディングとして
LACE、UTF-6、DUDE という方式が提案されています。RACE と同様、これらの
エンコーディングも
通常の ASCII ドメイン名と区別するために特別なプリフィックスを使用します。
現在のインターネットドラフト (
draft-ietf-idn-lace-01,
draft-ietf-idn-utf6-00,
draft-ietf-idn-dude-01)
ではそれぞれ
"lq--"
、"wq--"
、"dq--"
ですが、 将来これが変更された場合にはこのオプションを用いて正しいプリフィックスを 指定してください。 -
--with-altdude-prefix=PREFIX
--with-altdude-suffix=SUFFIX
--with-amc-ace-m-prefix=PREFIX
--with-amc-ace-m-suffix=SUFFIX
--with-amc-ace-o-prefix=PREFIX
--with-amc-ace-o-suffix=SUFFIX
--with-amc-ace-r-prefix=PREFIX
- RACE と同じように ASCII 互換エンコーディングとして
AltDUDE、AMC-ACE-M、AMC-ACE-O、AMC-ACE-R という方式が提案されています。
これらのエンコーディングも通常の ASCII ドメイン名と区別するために
特別なプリフィックスやサフィックスを使用します。
ただしこれらのエンコーディングに関しては
現在のインターネットドラフト (
draft-ietf-idn-altdude-00,
draft-ietf-idn-amc-ace-m-00,
draft-ietf-idn-amc-ace-o-00,
draft-ietf-idn-amc-ace-r-00)
では具体的なプリフィックス、サフィックスの指定がありません。
さらに AltDUDE、AMC-ACE-M、AMC-ACE-O に関してはプリフィックスおよび
サフィックスのいずれも使用することが可能です。
現在 mDNkit では、
AltDUDE についてはプリフィックス
"a---"
、 AMC-ACE-M についてはサフィックス"-amc1"
、 AMC-ACE-O についてはサフィックス"-amc2"
、 AMC-ACE-R についてはプリフィックス"amc3-"
をデフォルトとして与えていますが、これらのオプションを使用して 変更することが可能です。 -
--sbindir=DIR
- DNS プロキシサーバ mdnsproxy をインストールするディレクトリを指定します。
デフォルトでは
/usr/local/sbin
にインストールされます。 -
--bindir=DIR
- ゾーンマスタファイルコード変換ツール mdnconv
およびクライアントに多言語ドメイン名処理を付加する runmdn コマンド
をインストールするディレクトリを指定します。
デフォルトでは
/usr/local/bin
にインストールされます。 -
--libdir=DIR
- mdnsproxy や mdnconv 等が使用する mDNkit の基本ライブラリを
インストールするディレクトリを指定します。
デフォルトでは
/usr/local/lib
にインストールされます。 -
--includedir=DIR
- mDNkit の基本ライブラリを使用するのに必要なヘッダファイルを
インストールするディレクトリを指定します。
デフォルトでは
/usr/local/include
にインストールされます。 -
--sysconfdir=DIR
- DNS プロキシサーバ mdnsproxy の設定ファイル、および
mDNkit のクライアント共通設定ファイルを
インストールするディレクトリを指定します。
デフォルトでは
/usr/local/etc
にインストールされます。 -
--mandir=DIR
- オンラインマニュアルをインストールするベースディレクトリを指定します。
デフォルトでは
/usr/local/man
です。実際にはこのディレクトリの サブディレクトリのman1
やman8
にインストールされます。 -
--logdir=DIR
- mdnsproxy が出力するログファイルを置くディレクトリを指定します。
デフォルトでは
/usr/local/var/mdnsproxy
です。
この他にも configure
にはいろいろなオプションを指定することが
できます。
% ./configure --help
で指定可能なオプションの一覧を表示させることができます。
また、関係する環境変数は次の通りです。
-
CC
- C コンパイラのコマンド名を指定します。
-
CFLAGS
- C コンパイラに渡すコンパイルオプションを指定します。例えば外部の
iconv パッケージをインストールしたときに、インクルードファイル
iconv.h
が標準以外のディレクトリ、例えば/usr/local/include
にインストールされたとします。このような 場合にはCFLAGS
に-I/usr/local/include
を 設定する必要があります。具体的には、csh 系のシェルの場合には% setenv CFLAGS -I/usr/local/include
% CFLAGS=-I/usr/local/include; export CFLAGS
CFLAGS
はこの他にも C コンパイラの最適化オプションを 指定するためにも使えます。CFLAGS
に-O
を指定すれば 最適化ありでコンパイルされます。
configure
を実行することにより、あなたのシステム環境に合わせて
調整された Makefile
その他のファイルが生成されます。
コンパイル
configure
実行によって、システム環境
に合った Makefile が生成されているので、コンパイルはトップディレクトリ
($MDNTOP
の指すディレクトリ) で
make
コマンドを実行するだけです。
% make
ファイルのインストール
コンパイルが終了したら、実行ファイルなどのインストールを行います。 インストールの前にスーパーユーザになってください。
% su
あとは make install
を実行すれば、必要なファイルが
システムにインストールされます。
# make install
インストールされるファイルは以下の通りです。
インストールされる実行ファイル
次の実行ファイルがインストールされます。
-
mdnsproxy
- DNS プロキシサーバです。
-
mdnconv
- ゾーンマスタファイル用のコード変換ツールです。
-
runmdn
クライアントを再コンパイルすることなしに多言語ドメイン名の名前解決 機能を付加するコマンドです。
mdnsproxy
は、デフォルトでは /usr/local/sbin
に
インストールされます。
インストール先を変えるには
configure
の --sbindir
オプションを使用します。
mdnconv
および runmdn
は、
デフォルトでは /usr/local/bin
にインストールされます。
インストール先を変えるには
configure
の --bindir
オプションを使用します。
インストールされるオンラインマニュアル
以下のオンラインマニュアルがインストールされます。
-
mdnconv.1
- ゾーンマスタファイル用のコード変換ツール mdnconv のマニュアルです。
-
runmdn.1
- runmdn コマンドのマニュアルです。
-
libmdn.3
- 多言語ドメイン名変換 API のオンラインマニュアルです。
-
mdn.conf.5
- クライアント共通設定ファイル
mdn.conf.5
の オンラインマニュアルです。 -
mdnsproxy.8
- DNS プロキシサーバ mdnsproxy のマニュアルです。
デフォルトでは
/usr/local/man/man1
(mdnconv.1
、
runmdn.1
)、
/usr/local/man/man3
(libmdn.3
)、
/usr/local/man/man5
(mdn.conf.5
)、
/usr/local/man/man8
(mdnsproxy.8
)
にそれぞれインストールされます。
インストール先を変えるには、configure
の
--mandir
オプションを使用します。
インストールされる設定ファイル
以下の設定ファイルあるいはそのサンプルファイルがインストールされます。
-
mdnsproxy.conf.sample
- DNS プロキシサーバ mdnsproxy の設定ファイルの設定例を記述した サンプルファイルです。 このファイルの設定方法に関しては mDNS Proxy Server の設定 を参照してください。
-
mdn.conf.sample
- mDNkit の共通設定ファイル mdn.conf の設定例を記述した サンプルファイルです。このファイルの設定方法に関しては mDNkit の設定 を参照してください。
-
mdn.conf
- mDNkit の共通設定ファイルです。このファイルは
configure
に--with-preference
オプションを 指定し、かつインストール先に同じ名前のファイルが存在しない時にのみ インストールされます。
いずれもデフォルトでは /usr/local/etc
にインストールされます。
インストール先を変えるには、configure
の
--sysconfdir
オプションを使用します。
インストールされるライブラリ
以下のライブラリがインストールされます。
-
libmdn
- mdnsproxy や mdnconv 等のコマンドが使用している mDNkit の基本ライブラリです。
-
libmdnres
- runmdn コマンドによってクライアントに動的にリンクされる ライブラリです。
いずれのライブラリもデフォルトでは /usr/local/lib
に
インストールされます。
インストール先を変えるには
configure
の --libdir
オプションを使用します。
インストールされるヘッダファイル
libmdn のヘッダファイルがインストールされます。
デフォルトでは /usr/local/include
の下に mdn
という
ディレクトリが作られ、その下にインストールされます。
インストール先を変えるには、configure
の
--includedir
オプションを使用します。
BIND 9 用パッチの適用とインストール
展開したソースの中の
$MDNTOP/patch/bind9/bind-9.1.2-patch
が
BIND 9.1.2 に対するパッチです。
パッチの当て方はこのファイルの先頭にも書いてありますが、簡単に紹介すると、
次のようになります。
- BIND 9.1.2 のソースのトップディレクトリ
(
README
というファイルがあるディレクトリです) に移動します。% cd /somewhere/.../bind-9.1.2
-
patch
コマンドを使用してソースにパッチを当てます。% patch -p0 < $MDNTOP/patch/bind9/bind-9.1.2-patch
パッチを当てたあとは BIND 9 のソース中の README.mdnkit
を
ご覧ください。コンパイル・インストール方法などが書かれています。
パッチを当てた BIND 9 をコンパイルするには、あらかじめ mDNkit を コンパイルおよびインストールしておいてください。
BIND 8 用パッチの適用とインストール
展開したソースの中の
$MDNTOP/patch/bind8/bind-8.2.3-patch
が
BIND 8.2.3 に対する 8ビットスルーパッチです。
パッチの当て方はこのファイルの先頭にも書いてありますが、簡単に紹介すると、
次のようになります。
- BIND 8.2.3 のソースのトップディレクトリ
(
src
というサブディレクトリがあるディレクトリです) に移動します。% cd /somewhere/.../bind-8.2.3
-
patch
コマンドを使用してソースにパッチを当てます。% patch -p0 < $MDNTOP/patch/bind8/bind-8.2.3-patch
パッチを当てたら、あとは通常の BIND のインストール方法にしたがって
コンパイルとインストールを行ってください。インストール方法は BIND の
ソース中の src/INSTALL
に書かれています。
BIND 8 用のパッチは BIND を単に 8ビットスルーにするだけで、mDNkit の ライブラリ等は使用しません。したがって mDNkit 本体とは独立にコンパイルおよび インストールすることができます。
squid 用パッチの適用とインストール
展開したソースの中の $MDNTOP/patch/squid/squid-2.3.STABLE3-patch
が
Squid 2.3.STABLE3 に対する 8ビットスルーパッチです。
パッチの当て方はこのファイルの先頭にも書いてありますが、簡単に紹介すると、
次のようになります。
- Squid 2.3.STABLE3 のソースのトップディレクトリ (
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 本体とは独立にコンパイルおよび インストールすることができます。