165 lines
5.8 KiB
Text
165 lines
5.8 KiB
Text
Installation
|
|
|
|
The software is distributed as source code which has to be compiled. The source
|
|
code is supplied in the form of a gzipped tar file, which unpacks to a
|
|
subdirectory identifying the name and version of the program.
|
|
|
|
A C compiler (e.g. gcc or clang) and GNU Make are needed to build chrony. The
|
|
following libraries with their development files, and programs, are needed to
|
|
enable optional features:
|
|
|
|
o pkg-config: detection of development libraries
|
|
|
|
o Nettle, GnuTLS, NSS, or LibTomCrypt: secure hash functions (SECHASH)
|
|
|
|
o libcap: dropping root privileges on Linux (DROPROOT)
|
|
|
|
o libseccomp: system call filter on Linux (SCFILTER)
|
|
|
|
o GnuTLS and Nettle: Network Time Security (NTS)
|
|
|
|
o Editline: line editing in chronyc (READLINE)
|
|
|
|
o timepps.h header: PPS reference clock
|
|
|
|
o Asciidoctor: documentation in HTML format
|
|
|
|
o Bash: test suite
|
|
|
|
The following programs are needed when building chrony from the git repository
|
|
instead of a released tar file:
|
|
|
|
o Asciidoctor: manual pages
|
|
|
|
o Bison: parser for chronyc settime command
|
|
|
|
After unpacking the source code, change directory into it, and type
|
|
|
|
./configure
|
|
|
|
This is a shell script that automatically determines the system type. There is
|
|
an optional parameter --prefix, which indicates the directory tree where the
|
|
software should be installed. For example,
|
|
|
|
./configure --prefix=/opt/free
|
|
|
|
will install the chronyd daemon into /opt/free/sbin and the chronyc control
|
|
program into /opt/free/bin. The default value for the prefix is /usr/local.
|
|
|
|
The configure script assumes you want to use gcc as your compiler. If you want
|
|
to use a different compiler, you can configure this way:
|
|
|
|
CC=cc ./configure --prefix=/opt/free
|
|
|
|
for Bourne-family shells, or
|
|
|
|
setenv CC cc
|
|
setenv CFLAGS -O
|
|
./configure --prefix=/opt/free
|
|
|
|
for C-family shells.
|
|
|
|
If the software cannot (yet) be built on your system, an error message will be
|
|
shown. Otherwise, Makefile will be generated.
|
|
|
|
On Linux, if development files for the libcap library are available, chronyd
|
|
will be built with support for dropping root privileges. On other systems no
|
|
extra library is needed. The default user which chronyd should run as can be
|
|
specified with the --with-user option of the configure script.
|
|
|
|
If development files for the POSIX threads library are available, chronyd will
|
|
be built with support for asynchronous resolving of hostnames specified in the
|
|
server, peer, and pool directives. This allows chronyd operating as a server to
|
|
respond to client requests when resolving a hostname. If you don't want to
|
|
enable the support, specify the --disable-asyncdns flag to configure.
|
|
|
|
If development files for the Nettle, NSS, or libtomcrypt library are available,
|
|
chronyd will be built with support for other cryptographic hash functions than
|
|
MD5, which can be used for NTP authentication with a symmetric key. If you
|
|
don't want to enable the support, specify the --disable-sechash flag to
|
|
configure.
|
|
|
|
If development files for the editline library are available, chronyc will be
|
|
built with line editing support. If you don't want this, specify the
|
|
--disable-readline flag to configure.
|
|
|
|
If a timepps.h header is available (e.g. from the LinuxPPS project), chronyd
|
|
will be built with PPS API reference clock driver. If the header is installed
|
|
in a location that isn't normally searched by the compiler, you can add it to
|
|
the searched locations by setting the CPPFLAGS variable to -I/path/to/timepps.
|
|
|
|
The --help option can be specified to configure to print all options supported
|
|
by the script.
|
|
|
|
Now type
|
|
|
|
make
|
|
|
|
to build the programs.
|
|
|
|
If you want to build the manual in HTML, type
|
|
|
|
make docs
|
|
|
|
Once the programs have been successfully compiled, they need to be installed in
|
|
their target locations. This step normally needs to be performed by the
|
|
superuser, and requires the following command to be entered.
|
|
|
|
make install
|
|
|
|
This will install the binaries and man pages.
|
|
|
|
To install the HTML version of the manual, enter the command
|
|
|
|
make install-docs
|
|
|
|
Now that the software is successfully installed, the next step is to set up a
|
|
configuration file. The default location of the file is /etc/chrony.conf.
|
|
Several examples of configuration with comments are included in the examples
|
|
directory. Suppose you want to use public NTP servers from the pool.ntp.org
|
|
project as your time reference. A minimal useful configuration file could be
|
|
|
|
pool pool.ntp.org iburst
|
|
makestep 1.0 3
|
|
rtcsync
|
|
|
|
Then, chronyd can be run. For security reasons, it's recommended to create an
|
|
unprivileged user for chronyd and specify it with the -u command-line option or
|
|
the user directive in the configuration file, or set the default user with the
|
|
--with-user configure option before building.
|
|
|
|
Support for system call filtering
|
|
|
|
chronyd can be built with support for the Linux secure computing (seccomp)
|
|
facility. This requires development files for the libseccomp library and the
|
|
--enable-scfilter option specified to configure. The -F option of chronyd will
|
|
enable a system call filter, which should significantly reduce the kernel
|
|
attack surface and possibly prevent kernel exploits from chronyd if it is
|
|
compromised.
|
|
|
|
Extra options for package builders
|
|
|
|
The configure and make procedures have some extra options that may be useful if
|
|
you are building a distribution package for chrony.
|
|
|
|
The --mandir=DIR option to configure specifies an installation directory for
|
|
the man pages. This overrides the man subdirectory of the argument to the
|
|
--prefix option.
|
|
|
|
./configure --prefix=/usr --mandir=/usr/share/man
|
|
|
|
to set both options together.
|
|
|
|
The final option is the DESTDIR option to the make command. For example, you
|
|
could use the commands
|
|
|
|
./configure --prefix=/usr --mandir=/usr/share/man
|
|
make all docs
|
|
make install DESTDIR=./tmp
|
|
cd tmp
|
|
tar cvf - . | gzip -9 > chrony.tar.gz
|
|
|
|
to build a package. When untarred within the root directory, this will install
|
|
the files to the intended final locations.
|
|
|
|
Last updated 2024-10-08 14:49:43 +0200
|