mDNkit Compilation and Installation Japan Network Information Center (JPNIC) This file explains how to compile and install the source package. These procedures take the following steps: + Prerequisite: making iconv() available + System Configuration: running `configure' script + Compilation: running `make' + Installation: running `make install' + Site Configuration: tailoring `mdn.conf' + Configuration Check (optional) 0. Prerequisite If your system's library does not have iconv() function, which is a general codeset conversion utility, install it as an external library. You also need external library if the system's implementation cannot handle UTF-8 encoding, or it doesn't support some encodings which your client applications uses. You can get a free version of iconv() implementation (under LGPL license, aka GNU libiconv) from: http://clisp.cons.org/~haible/packages-libiconv.html *Note* GNU libiconv-1.6.1 have a compilation problem on NetBSD 1.5. There is a patch file for the bug under patch/libiconv directory. If you are a NetBSD 1.5 user and found a problem in compiling libiconv, apply the patch and try again. The patch file contains brief instructions on how to apply it at the beginning. 1. Running configure script Run `configure' script in the top directory. This checks various characteristics of your system and it will create Makefiles and config.h appropriate for your system. % ./configure `configure' accepts many options. Here is a list of some important options. --prefix=PREFIX Specifies the prefix of install directories of mDNkit. The default is /usr/local. --with-libiconv=LIBICONV_PREFIX If you have installed GNU libiconv and would like to link it to mDNkit, specify this option. The argument LIBICONV_PREFIX is install prefix of GNU libiconv. If the argument is omitted, PREFIX (derived from --prefix=PREFIX option) is assumed. --with-libiconv is shorthand option for GNU libiconv. --with-libiconv=/usr/local This is equivalent to: --with-iconv-include='-I/usr/local/include' --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv' If both the shorthand option (--with-libiconv) and longhand options (--with-iconv-include and/or --with-iconv) are specified, the longhand options have priority. --with-iconv-include=ICONV_INCDIR If the header file "iconv.h" resides in a directory where your C compiler doesn't search by default, specify the directory as DIR like this: --with-iconv-include=/usr/local/include --with-iconv=ICONV_LIB If your libc doesn't contain iconv(), specify the library that contains iconv(). For example, if iconv() is libiconv in /usr/local/lib, you should specify: --with-iconv="-L/usr/local/lib -liconv" Note that if the library is a shared one, you might also want to specify -R option, like: --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv" --with-iconv-sofile=SOFILE_PATH ``runmdn'' command in this kit needs to know the pathname of shared library file that contains iconv(), if iconv() is not part of libc. mDNkit tries to find out the pathname from the informaiton provided by ``--with-iconv'' option described above. But when it fails, you have to specify it with this option, like: --with-iconv-sofile=/usr/local/lib/libiconv.so.2.0 --with-utf8=UTF8_NAME If your iconv() (precisely, iconv_open()) does not accept "UTF-8" as the name of UTF-8 encoding, specify the name for it. For example if your iconv() uses "utf8" instead, you should specify: --with-utf8=utf8 2. Other configure options The configure script has many other options though they are not widely used: --with-preference=PREFERENCE This option sets the preference for the sample mDNkit configuration file (mdn.conf.sample). Also this option enables to install default configuration file (mdn.conf) if the file didn't exist. The only preference supported by this version is "jp". --with-amc-ace-z-prefix=AMCZ_PREFIX AMC-ACE-Z is a proposed encoding for multilingual domain name in DNS protocol data. It requires a specific prefix string to distinguish domain names encoded by them from normal ASCII domain names, but the current Internet draft of AMC-ACE-Z doesn't define prefix. You can specify the prefix with this option. Otherwise mDNkit defines "zq--" as the prefix. --with-race-prefix=RACE_PREFIX --with-dude-prefix=DUDE_PREFIX Also RACE and DUDE are encodings for multilingual domain name, but they are obsolete. Since Internet drafts for these encodings defines ACE prefixes, mDNkit uses them by default, but you can specify prefix with these options. --exec-prefix=EXEC_PREFIX Specifies the prefix of install directories for machine-specific files. The default is PREFIX (derived from ``--prefix=PREFIX'' and its default is /usr/local). --sbindir=SBINDIR Specifies the install directory for mdnsproxy. The default is EXEC_PREFIX/sbin. --bindir=BINDIR Specifies the install directory for mdnconv and runmdn. The default is EXEC_PREFIX/bin. --libdir=LIBDIR Specifies the install directory for the MDN library (libmdn). The default is EXEC_PREFIX/lib. --includedir=INCDIR Specifies the install directory for the header files of the MDN library. The default is PREFIX/include. --sysconfdir=SYSCONFDIR Specifies the install directory for sample configuration files of the MDN Library and mdnsproxy. The default is PREFIX/etc. --mandir=MANDIR Specifies the base install directory for online manuals. The default is PREFIX/man. --datadir=DATADIR Specifies the base install directory for machine independent data files. The default is PREFIX/share. Some data files for mDNkit will be put under the DATADIR/mdnkit directory. --localstatedir=LOCALSTATEDIR --with-logdir=LOGDIR LOGDIR specifies the directory where mdnsproxy outputs log files by default. Its default value is LOCALSTATEDIR/mdnsproxy, and the default value of LOCALSTATEDIR is PREFIX/var. --enable-debug Enable debugging codes. The fault is "no". --enable-shared Build shared library. The fault is "yes". --enable-static Build static library. The fault is "yes". To see the list of available options, you should run it with --help option. % ./configure --help 3. Compiling Run `make' for compilation. % make 4. Installation Run `make install' to install binaries and manuals. Don't forget to become a super-user before the installation. % su # make install 5. Configuration and usage mDNkit needs a configuration file `mdn.conf' to work properly. Unless you specified --with-preference option to the `configure' script, you have to create the file. Please refer the manual for `mdn.conf' for details. A sample configuration (`mdn.conf.sample') is also provided for your convenience. Also online manuals for `mdnsproxy', `mdnconv' and `runmdn' commands are available. Please refer them for the usage and configuration of these commands. % man mdn.conf % man mdnsproxy % man mdnconv % man runmdn 6. Check your configuration A simple shell script `mdnslookup' is available in the directory `tools/mdnconv', with which you can make queries for multilingual domain names. It may help you check your configuration. The usage of `mdnslookup' is: % tools/mdnconv/mdnslookup Suppose that is an internationalized domain name written in the local codeset (see ``LOCAL CODESET'' in the `mdn.conf' man page for details), and is a hostname or IP address of DNS server. `mdnslookup' inquires from , using `mdnconv' and `nslookup' commands. If something is wrong, you will see an error message output by `mdnconv', `nslookup' or `mdnslookup' itself. ; $Id: INSTALL,v 1.1.1.1 2003/01/10 00:47:47 bbraun Exp $