Building and Installing the Distribution

From pogo, Walt Kelly

For putting out compiler fires.


Building and Installing the Distribution

Note that the automatic build process inspects the machine environment and tests for the presence of system header files and the contents of these files to determine if certain features are available. When one or more of these features are present, the code is compiled to use them; if not, no special code is compiled. However, even if the code is compiled to use these features, the code does a special test at run time to see if one or more are actually present and avoids using them if not present. In such cases a warning message is sent to the system log, but the daemon should still work properly.

Support for Cryptographic Authentication

As required by the International Trade in Arms Regulations (ITAR), now called the Defense Trade Regulations (DTR), certain cryptographic products and media, including the Data Encryption Standard (DES), cannot be exported without per-instance license. For this reason, the DES encryption routine has been removed from the the current version, even though it is used only to compute a message digest. Current DTR regulations allow export of the the MD5 message digest routine, which is in fact the preferred algorithm, and this is included in the current version.

The NTP authentication routines conform to the interface used by RSA Laboratories in the rsaref20.zip package, which is downloadable from ftp.rsa.com or via the web at www.rsa.com. Outside the U.S. and Canada, the functionally identical rsaeuro.zip package is available from J.S.A. Kapp and other sources. The recommended way to integrate the DES routines in either package with the NTP build procedures is to copy the desc.c file from the ./source directory in the package to the ./libntp directory in the distribution. Then copy the header files rsaref.h, des.h and md2.h in the ./source directory to the ./include directory. Do not copy the global.h header file; the one in the distribution has been modified. These steps must be completed before the configuration process described below.

Building and Installing under Unix

Make sure that you have all necessary tools for building executables. These tools include cc/gcc, make, awk, sed, tr, sh, grep, egrep and a few others. Not all of these tools exist in the standard distribution of modern Unix versions (compilers are likely to be an add- on product - consider using the gnu tools and gcc compiler in this case). For a successful build, all of these tools should be accessible via the current path.

Configuration

Use the ./configure command to perform an automatic configuration procedure. This procedure normally includes the debugging code, which can be useful in diagnosing problems found in initial test, and all reference clock drivers known to work with each machine and operating system. Unless memory space is at a premium, this is a sensible strategy and saves lots of messy fiddling. If you need to delete either the debugging code or one or more or all reference clock drivers to save space, see the Configuration Options page.

If your site supports multiple architectures and uses NFS to share files, you can use a single source tree to compile executables for all architectures. While running on a target architecture machine and with the distribution base directory active, create a subdirectory using a command like mkdir A.`config.guess`, which will create an architecture-specific directory with name peculiar to the architecture and operating system. Then change to this directory and configure with the ../configure command. The remaining steps are the same whether building in the base directory or in the subdirectory.

Compilation

Peruse the operating-system-specific information for your architecture under Hints and Kinks.

Use the make command to compile all source modules, construct the libraries and link the distribution. Expect few or no warnings using cc and a moderate level of warnings using gcc. Note: On some Unix platforms the use of gcc can result in quite a few complaints about system header files and type inconsistencies, especially about pointer variables. This is usually the case when the system header files are not up to ANSI standards or gcc-isms, when gcc is not installed properly, or when operating system updates and patches are applied and gcc is not reinstalled. While the autoconfigure process is quite thorough, the Unix programming cultures of the various workstation makers still remain idiosyncratic.

Installation

As root, use the make install command to install the binaries in the destination directory. You must of course have write permission on the install destination directory. This includes the programs ntpd (the daemon), ntpdc (an ntpd-dependent query program), ntpq (a standard query program), ntpdate (an rdate replacement for boot time date setting and sloppy time keeping) and ntptrace (a utility useful to find the primary (stratum-1) servers). In some systems, the tickadj (a utility useful to adjust kernel variables) is installed. If the precision time kernel modifications are present, the ntptime (a utility useful to debug kernel time functions) is installed.

You are now ready to configure the daemon and start it. You will need to create a NTP configuration file ntp.conf and possibly a cryptographic key file ntp.keys. Directions for doing that are in the Notes on Configuring NTP and Setting up a NTP Subnet. A tutorial on debugging technique is in NTP Debugging Technique.

If problems peculiar to the particular hardware and software environment (e.g. operating system -specific issues) are suspected, browse the Hints and Kinks page.

Bug reports of a general nature can be sent to David Mills <mills@udel.edu>. Bug reports of a specific nature on features implemented by the programmer corps mentioned in the Copyright page should be sent directly to the implementor listed in that page, with copy to mills@udel.edu.

Please include the version of the source distribution (e.g., ntp- 4.0.70a) in your bug report.

Please include the output of config.guess in your bug report.

It will look something like: pdp11-dec-fuzzos3.4

Additional make commands

make clean
Cleans out object files, programs and temporary files.
make distclean
Does the work of clean, but cleans out all directories in preparation for a new distribution release.
make dist
Does the work of make distclean, but constructs compressed tar files for distribution. You must have GNU automake to perform this function.

Building and Installing under Windows NT

Under Windows NT, you will need Visual C++ 5.0 or above, InstallShield SDK, Perl5 and some version of the archiving program ZIP. Note that the version of InstallShield that comes with VC++5.0 is not useable here, since it does not include the command line tools.

See the ./scripts/wininstall/readme.nt file for directions to compile the sources, build the libraries and link the executables. Initiate the build by running either bldrel.bat or blddbg.bat to compile all of the source and create an InstallShield based graphical installation package.

To install the executables, make sure that you are logged in as a system account, or one with administrator privileges such as the "administrator" account. As part of the build an InstallShield based graphical installer was created. Run \ntp\scripts\wininstall\intel\disk1\setup.exe to begin the installation. This installer will prompt for basic defaults, copy the binaries, install the service, and start it up. The other option is to run \ntp\scripts\wininstall\distrib\install.bat which will do the basic installation from the command line. 


David L. Mills <mills@udel.edu>