idnkit 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' + Test: running `make test' (optional) + Installation: running `make install' + Site Configuration: tailoring `idn.conf' + Configuration Check (optional) + Clean up (optional) See also the following section if you'd like to apply patch and install BIND9. + Applying patches 0. Prerequisite If you want to install generic idnkit library with code conversion support, and also if your system's library does not have iconv() function, which is a general codeset conversion utility, install iconv 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: ftp://ftp.gnu.org/gnu/libiconv/ and mirrors of that site. But if you don't want code conversion support and you want to install idnkitlite library without iconv support alone, you have not install external library. Instead, set `--enable-liteonly' value to "yes" at configure script execution. 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 idnkit. The default is /usr/local. --enable-runidn Build `runidn' command. The default is "no". You cannot set this option "yes" when `--enable-liteonly' is also set "yes". --with-libiconv=LIBICONV_PREFIX If you have installed GNU libiconv and would like to link it to idnkit, 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. You cannot set this option when --enable-liteonly is set "yes", because libidnkitlite library doesn't need iconv support. --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 You cannot set this option when `--enable-liteonly' is set "yes", because libidnkitlite library doesn't need iconv support. --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" You cannot set this option when `--enable-liteonly' is set "yes", because libidnkitlite library doesn't need iconv support. --with-iconv-sofile=SOFILE_PATH The runidn command in this kit needs to know the pathname of shared library file that contains iconv(), if iconv() is not part of libc. idnkit 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 You cannot set this option when `--enable-liteonly' is set "yes", because libidnkitlite library doesn't need iconv support. --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: --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). --bindir=BINDIR Specifies the install directory for idnconv and runidn. The default is EXEC_PREFIX/bin. --libdir=LIBDIR Specifies the install directory for the libraries (libidnkit and libidnkitlite). The default is EXEC_PREFIX/lib. --includedir=INCDIR Specifies the install directory for the header files of the libraries. The default is PREFIX/include. --sysconfdir=SYSCONFDIR Specifies the install directory for sample configuration files of the libraries. 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 idnkit will be put under the DATADIR/idnkit directory. --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". --enable-liteonly Build the `libidnlkitite' library only. Do not build the `libidnkit' library, idnconv and runidn. The fault is "no". If you want to set "yes" to this option, you cannot specify it together with `--enable-runidn', `--with-libiconv', `--with-iconv-include', `--with-iconv' or `--with-iconv-sofile'. To see the list of available options, you should run it with --help option. % ./configure --help 3. Compiling Run `make' for compilation. % make 4. Test Optionally, type `make test' to compile and run test programs. Note that Perl 5 is required for comipilation of the test programs. % make test The test programs assume that iconv() on the system recognizes the encoding name "EUC-JP" as Japanese EUC, and "SJIS" as Japanese Shift JIS. If iconv() on the system doesn't support the encoding name, please edit `lib/tests/codeset.h' before `make test'. *Note* If you use standard iconv which is attached as default on Solaris, converter's test "idn_converter_convfromucs4()" may fail. But it's not the problem because the result is derived from the difference of specification of iconv. So please ignore it if you run the test on Solaris. 5. Installation Run `make install' to install binaries and manuals. Don't forget to become a super-user before the installation. % su # make install *Note* If you have installed pre-release versions of idnkit (such as 1.0pr1), idnkit-1.0 may not work correctly because of the old configuration file 'idn.conf'. If this is the case, you should overwrite existing configuration files with the new ones by executing the following command after 'make install'. # make install-config 6. Configuration and usage Edit the `idn.conf' configuation file if you'd like to cosutomize conversion/normalization rules of idnkit. Please refer the manual for `idn.conf' for details. A sample configuration (`idn.conf.sample') is also provided for your convenience. The sample configuration file has also been installed as `idn.conf' if it has not exist on your system. Also online manuals for `idnconv' and `runidn' commands are available. Please refer them for the usage and configuration of these commands. % man idn.conf % man idnconv % man runidn 7. Check your configuration A simple shell script `idnslookup' is available in the directory `tools/idnconv', with which you can make queries for internationalized domain names. It may help you check your configuration. The usage of `idnslookup' is: % tools/idnconv/idnslookup Suppose that is an internationalized domain name written in the local codeset (see ``LOCAL CODESET'' in the `idn.conf' man page for details), and is a hostname or IP address of DNS server. `idnslookup' inquires from , using `idnconv' and `nslookup' commands. If something is wrong, you will see an error message output by `idnconv', `nslookup' or `idnslookup' itself. 8. Clean up Run `make clean' to delete files generated by `make' and `make test' from the idnkit source directory. (Files installed by `make install' are not removed.) % make clean Run `make distclean' instead to also delete files generated by `configure'. % make distclean After `make distclean', you can run `configure' and compile idnkit for another system using the source directory. Appendix A. Applying patches This distribution also contains patches for BIND9. The top of these patch files describe how to apply the patch and (re)install. Note that on Solaris, "patch" command that comes with the system sometimes doesn't work correctly. You may want to install the GNU version of the command (http://www.gnu.org/software/patch/) and use it. ; $Id: INSTALL,v 1.1 2003/06/04 00:24:59 marka Exp $