README 3.55 KB
Newer Older
Marek Vavrusa's avatar
Marek Vavrusa committed
1 2
Dependencies
============
3

Marek Vavrusa's avatar
Marek Vavrusa committed
4 5 6 7 8
Knot DNS has several dependencies:
* libtool
* autoconf > 2.65
* flex >= 2.5.31
* bison >= 2.3
9
* libssl >= 1.0.0    (>= 1.0.1 is required for ECDSA)
10
* liburcu >= 0.5.4
Marek Vavrusa's avatar
Marek Vavrusa committed
11 12

Optional packages:
13 14
* libcap-ng >= 0.6.4 (for POSIX 1003.1e capabilites(7))
* ragel (for fast zone parsing)
15 16 17

Dependencies for building documentation:
* texinfo
Marek Vavrusa's avatar
Marek Vavrusa committed
18

19 20
By default Knot DNS is distributed with a slower zone file parser because of
smaller source file and quick compile time. In most cases it is sufficient.
Jan Kadlec's avatar
Jan Kadlec committed
21
If you plan to process large zone files, we recommend to build Knot DNS
22 23 24
using ./configure --enable-fastparser. In this case Ragel compiler is required
and it is normal if the C compiler takes much more time (minutes).

Jan Mercl's avatar
Jan Mercl committed
25 26
Installation
============
27

Daniel Salzman's avatar
Daniel Salzman committed
28
Knot DNS may already be included in your operating system distribution and
29 30 31 32 33 34
therefore can be installed from packages (Linux) or ports (BSD). This is
always preferred unless you want to test the latest features, contribute to
Knot development, or you just know what you are doing.

Following sections describe how to build Knot DNS from the source code.

Daniel Salzman's avatar
Daniel Salzman committed
35
1) Install prerequisites
Jan Mercl's avatar
Jan Mercl committed
36

Daniel Salzman's avatar
Daniel Salzman committed
37 38 39
Debian based distributions
--------------------------
Update the system:
Jan Mercl's avatar
Jan Mercl committed
40 41
$ sudo apt-get update
$ sudo apt-get upgrade
42

Daniel Salzman's avatar
Daniel Salzman committed
43 44
Install prerequisites:
$ sudo apt-get install git-core libtool autoconf flex bison libssl-dev liburcu-dev
45

Daniel Salzman's avatar
Daniel Salzman committed
46 47 48
Install optional packages:
($ sudo apt-get install libcap-ng-dev)
($ sudo apt-get install ragel)
49

Daniel Salzman's avatar
Daniel Salzman committed
50 51
If the liburcu-dev package is not present, install it from the source code
(http://lttng.org/urcu)
52

Daniel Salzman's avatar
Daniel Salzman committed
53 54
Fedora like distributions
-------------------------
55
Update the system:
Daniel Salzman's avatar
Daniel Salzman committed
56
$ yum upgrade
57 58

Ensure all base development tools are available:
Daniel Salzman's avatar
Daniel Salzman committed
59
$ yum install @buildsys-build
60 61

Ensure all prerequisites are installed:
Daniel Salzman's avatar
Daniel Salzman committed
62
$ yum install libtool autoconf flex bison openssl-devel userspace-rcu-devel
63

Daniel Salzman's avatar
Daniel Salzman committed
64 65 66
Install optional packages:
($ yum install libcap-ng-devel)
($ yum install ragel)
67

Daniel Salzman's avatar
Daniel Salzman committed
68 69
OS X
----
70 71 72 73 74
Not all prerequisites are preinstalled for OS X.
- liburcu must be compiled from sources
  - liburcu requires gcc-4.6 from MacPorts, as it depends on __thread keyword
  $ CC=gcc-mp-4.6 ARCH=x86_64 ./configure
  $ make && sudo make install
75 76
- liburcu >= 0.7.0 works with supplied compiler, however ARCH must still be set
  - alternative is to set it with configure parameter --target
77

Jan Včelák's avatar
Jan Včelák committed
78
Compiling Knot DNS with gcc-mp-4.6 is recommended, but not necessary.
79

Daniel Salzman's avatar
Daniel Salzman committed
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
2) Install Knot DNS

Knot DNS requires compiler to support atomic intrinsics.
GCC version at least 4.1 supports legacy atomic builtins, however 4.7
or newer is preferred.
Clang supports atomics since version 2.9.

Get the source code:
$ git clone git://git.nic.cz/knot-dns.git
Or extract source package to knot-dns directory

Compile Knot
$ cd knot-dns
$ autoreconf -if
$ ./configure
$ make

Install Knot DNS into system:
$ sudo make install
$ sudo ldconfig

101 102 103
Running
=======

Daniel Salzman's avatar
Daniel Salzman committed
104 105
1) Each server needs configuration file. Please see samples/knot.sample.conf
for reference or samples/knot.full.conf for more examples.
Jan Kadlec's avatar
Jan Kadlec committed
106
Configuration file has to specify:
Daniel Salzman's avatar
Daniel Salzman committed
107 108 109
- storage for PID files, journal files etc.
- network interfaces
- served zones
Marek Vavrusa's avatar
Marek Vavrusa committed
110

Daniel Salzman's avatar
Daniel Salzman committed
111 112 113 114 115
E.g. use the default config file:
$ cd /etc/knot
$ mv knot.sample.conf knot.conf
Modify the config:
$ vim knot.conf
Marek Vavrusa's avatar
Marek Vavrusa committed
116

Daniel Salzman's avatar
Daniel Salzman committed
117 118
2) Prepare working directory
$ mv example.com.zone /var/lib/knot/
119

Daniel Salzman's avatar
Daniel Salzman committed
120
3) Start the server. This can be done by running the 'knotd' command.
Daniel Salzman's avatar
Daniel Salzman committed
121 122
Alternatively, your distribution should have an init script available, if you've
installed Knot using a binary package.
123

Daniel Salzman's avatar
Daniel Salzman committed
124
Start Knot in foreground to see if it runs:
Daniel Salzman's avatar
Daniel Salzman committed
125
$ knotd -c myserver.conf
Jan Kadlec's avatar
Jan Kadlec committed
126

Daniel Salzman's avatar
Daniel Salzman committed
127 128 129
For more information, refer to the user manual or:
$ knotc -h
$ knotd -h
130