blob: 16e29c99ecdf86eea94d368c8251ac6080d5bd00 [file] [log] [blame]
paul76b89b42004-11-06 17:13:09 +00001@node Installation
paul718e3742002-12-13 20:15:29 +00002@chapter Installation
3
paul7190f4e2003-08-12 12:40:20 +00004@cindex How to install Quagga
paul718e3742002-12-13 20:15:29 +00005@cindex Installation
paul7190f4e2003-08-12 12:40:20 +00006@cindex Installing Quagga
paul718e3742002-12-13 20:15:29 +00007@cindex Building the system
paul7190f4e2003-08-12 12:40:20 +00008@cindex Making Quagga
paul718e3742002-12-13 20:15:29 +00009
paul76b89b42004-11-06 17:13:09 +000010There are three steps for installing the software: configuration,
paul718e3742002-12-13 20:15:29 +000011compilation, and installation.
12
13@menu
paul76b89b42004-11-06 17:13:09 +000014* Configure the Software::
15* Build the Software::
16* Install the Software::
paul718e3742002-12-13 20:15:29 +000017@end menu
18
paul76b89b42004-11-06 17:13:09 +000019The easiest way to get Quagga running is to issue the following
paul718e3742002-12-13 20:15:29 +000020commands:
21
22@example
23% configure
24% make
25% make install
26@end example
27
paul76b89b42004-11-06 17:13:09 +000028@node Configure the Software
paul718e3742002-12-13 20:15:29 +000029@section Configure the Software
30
paul76b89b42004-11-06 17:13:09 +000031@menu
32* The Configure script and its options::
33* Least-Privilege support::
34* Linux notes::
35@end menu
36
37@node The Configure script and its options
38@subsection The Configure script and its options
39
paul718e3742002-12-13 20:15:29 +000040@cindex Configuration options
41@cindex Options for configuring
42@cindex Build options
43@cindex Distribution configuration
44@cindex Options to @code{./configure}
45
paul76b89b42004-11-06 17:13:09 +000046Quagga has an excellent configure script which automatically detects most
47host configurations. There are several additional configure options you can
48use to turn off IPv6 support, to disable the compilation of specific
49daemons, and to enable SNMP support.
paul718e3742002-12-13 20:15:29 +000050
51@table @option
52@item --enable-guile
53Turn on compilation of the zebra-guile interpreter. You will need the
54guile library to make this. zebra-guile implementation is not yet
55finished. So this option is only useful for zebra-guile developers.
56@item --disable-ipv6
paul7190f4e2003-08-12 12:40:20 +000057Turn off IPv6 related features and daemons. Quagga configure script
paul718e3742002-12-13 20:15:29 +000058automatically detects IPv6 stack. But sometimes you might want to
paul7190f4e2003-08-12 12:40:20 +000059disable IPv6 support of Quagga.
paul718e3742002-12-13 20:15:29 +000060@item --disable-zebra
61Do not build zebra daemon.
62@item --disable-ripd
63Do not build ripd.
64@item --disable-ripngd
65Do not build ripngd.
66@item --disable-ospfd
67Do not build ospfd.
68@item --disable-ospf6d
69Do not build ospf6d.
70@item --disable-bgpd
71Do not build bgpd.
72@item --disable-bgp-announce
73Make @command{bgpd} which does not make bgp announcements at all. This
74feature is good for using @command{bgpd} as a BGP announcement listener.
75@item --enable-netlink
paul7190f4e2003-08-12 12:40:20 +000076Force to enable @sc{gnu}/Linux netlink interface. Quagga configure
paul718e3742002-12-13 20:15:29 +000077script detects netlink interface by checking a header file. When the header
78file does not match to the current running kernel, configure script will
79not turn on netlink support.
80@item --enable-snmp
81Enable SNMP support. By default, SNMP support is disabled.
paul971a4492003-06-20 01:18:07 +000082@item --enable-opaque-lsa
83Enable support for Opaque LSAs (RFC2370) in ospfd.
84@item --disable-ospfapi
85Disable support for OSPF-API, an API to interface directly with ospfd.
86OSPF-API is enabled if --enable-opaque-lsa is set.
87@item --disable-ospfclient
88Disable building of the example OSPF-API client.
89@item --enable-ospf-te
90Enable support for OSPF Traffic Engineering Extension (internet-draft) this
91requires support for Opaque LSAs.
92@item --enable-multipath=@var{ARG}
93Enable support for Equal Cost Multipath. @var{ARG} is the maximum number
94of ECMP paths to allow, set to 0 to allow unlimited number of paths.
95@item --enable-rtadv
96Enable support IPV6 router advertisement in zebra.
paul718e3742002-12-13 20:15:29 +000097@end table
98
99You may specify any combination of the above options to the configure
100script. By default, the executables are placed in @file{/usr/local/sbin}
101and the configuration files in @file{/usr/local/etc}. The @file{/usr/local/}
102installation prefix and other directories may be changed using the following
103options to the configuration script.
104
105@table @option
106@item --prefix=@var{prefix}
107Install architecture-independent files in @var{prefix} [/usr/local].
108@item --sysconfdir=@var{dir}
paul971a4492003-06-20 01:18:07 +0000109Look for configuration files in @var{dir} [@var{prefix}/etc]. Note
110that sample configuration files will be installed here.
111@item --localstatedir=@var{dir}
112Configure zebra to use @var{dir} for local state files, such
113as pid files and unix sockets.
paul718e3742002-12-13 20:15:29 +0000114@end table
115
paul76b89b42004-11-06 17:13:09 +0000116@example
117% ./configure --disable-ipv6
118@end example
119
120This command will configure zebra and the routing daemons.
121
122@node Least-Privilege support
123@subsection Least-Privilege support
124
125@cindex Quagga Least-Privileges
126@cindex Quagga Privileges
127
128Additionally, you may configure zebra to drop its elevated privileges
129shortly after startup and switch to another user. The configure script will
130automatically try to configure this support. There are three configure
131options to control the behaviour of Quagga daemons.
paul971a4492003-06-20 01:18:07 +0000132
133@table @option
134@item --enable-user=@var{user}
135Switch to user @var{ARG} shortly after startup, and run as user @var{ARG}
136in normal operation.
137@item --enable-group=@var{group}
138Switch real and effective group to @var{group} shortly after
139startup.
140@item --enable-vty-group=@var{group}
141Create Unix Vty sockets (for use with vtysh) with group owndership set to
142@var{group}. This allows one to create a seperate group which is
143restricted to accessing only the Vty sockets, hence allowing one to
144delegate this group to individual users, or to run vtysh setgid to
145this group.
146@end table
147
paul7190f4e2003-08-12 12:40:20 +0000148The default user and group which will be configured is 'quagga' if no user
paul76b89b42004-11-06 17:13:09 +0000149or group is specified. Note that this user or group requires write access to
150the local state directory (see --localstatedir) and requires at least read
151access, and write access if you wish to allow daemons to write out their
152configuration, to the configuration directory (see --sysconfdir).
paul971a4492003-06-20 01:18:07 +0000153
154On systems which have the 'libcap' capabilities manipulation library
paul76b89b42004-11-06 17:13:09 +0000155(currently only linux), the quagga system will retain only minimal
156capabilities required, further it will only raise these capabilities for
157brief periods. On systems without libcap, quagga will run as the user
158specified and only raise its uid back to uid 0 for brief periods.
paul971a4492003-06-20 01:18:07 +0000159
paul76b89b42004-11-06 17:13:09 +0000160@node Linux notes
161@subsection Linux Notes
paul718e3742002-12-13 20:15:29 +0000162
paul7190f4e2003-08-12 12:40:20 +0000163@cindex Configuring Quagga
paul718e3742002-12-13 20:15:29 +0000164@cindex Building on Linux boxes
165@cindex Linux configurations
166
167There are several options available only to @sc{gnu}/Linux systems:
paul76b89b42004-11-06 17:13:09 +0000168@footnote{@sc{gnu}/Linux has very flexible kernel configuration features}. If
169you use @sc{gnu}/Linux, make sure that the current kernel configuration is
paul7190f4e2003-08-12 12:40:20 +0000170what you want. Quagga will run with any kernel configuration but some
paul718e3742002-12-13 20:15:29 +0000171recommendations do exist.
172
173@table @var
174
175@item CONFIG_NETLINK
paul76b89b42004-11-06 17:13:09 +0000176Kernel/User netlink socket. This is a brand new feature which enables an
177advanced interface between the Linux kernel and zebra (@pxref{Kernel Interface}).
paul718e3742002-12-13 20:15:29 +0000178
179@item CONFIG_RTNETLINK
180Routing messages.
181This makes it possible to receive netlink routing messages. If you
182specify this option, @command{zebra} can detect routing information
183updates directly from the kernel (@pxref{Kernel Interface}).
184
185@item CONFIG_IP_MULTICAST
186IP: multicasting.
paul76b89b42004-11-06 17:13:09 +0000187This option should be specified when you use @command{ripd} (@pxref{RIP}) or
188@command{ospfd} (@pxref{OSPFv2}) because these protocols use multicast.
paul718e3742002-12-13 20:15:29 +0000189
190@end table
191
192IPv6 support has been added in @sc{gnu}/Linux kernel version 2.2. If you
paul7190f4e2003-08-12 12:40:20 +0000193try to use the Quagga IPv6 feature on a @sc{gnu}/Linux kernel, please
paul718e3742002-12-13 20:15:29 +0000194make sure the following libraries have been installed. Please note that
195these libraries will not be needed when you uses @sc{gnu} C library 2.1
196or upper.
197
198@table @code
199
200@item inet6-apps
201The @code{inet6-apps} package includes basic IPv6 related libraries such
202as @code{inet_ntop} and @code{inet_pton}. Some basic IPv6 programs such
203as @command{ping}, @command{ftp}, and @command{inetd} are also
204included. The @code{inet-apps} can be found at
paul76b89b42004-11-06 17:13:09 +0000205@uref{ftp://ftp.inner.net/pub/ipv6/}.
paul718e3742002-12-13 20:15:29 +0000206
207@item net-tools
208The @code{net-tools} package provides an IPv6 enabled interface and
209routing utility. It contains @command{ifconfig}, @command{route},
210@command{netstat}, and other tools. @code{net-tools} may be found at
paul76b89b42004-11-06 17:13:09 +0000211@uref{http://www.tazenda.demon.co.uk/phil/net-tools/}.
paul718e3742002-12-13 20:15:29 +0000212
213@end table
214@c A - end of footnote
paul718e3742002-12-13 20:15:29 +0000215
paul76b89b42004-11-06 17:13:09 +0000216@node Build the Software
paul718e3742002-12-13 20:15:29 +0000217@section Build the Software
218
219After configuring the software, you will need to compile it for your
220system. Simply issue the command @command{make} in the root of the source
221directory and the software will be compiled. If you have *any* problems
222at this stage, be certain to send a bug report @xref{Bug Reports}.
223
224@example
225% ./configure
226.
227.
228.
229./configure output
230.
231.
232.
233% make
234@end example
235@c A - End of node, Building the Software
236
237
paul76b89b42004-11-06 17:13:09 +0000238@node Install the Software
paul718e3742002-12-13 20:15:29 +0000239@comment node-name, next, previous, up
240@section Install the Software
241
242Installing the software to your system consists of copying the compiled
243programs and supporting files to a standard location. After the
244installation process has completed, these files have been copied
245from your work directory to @file{/usr/local/bin}, and @file{/usr/local/etc}.
246
paul7190f4e2003-08-12 12:40:20 +0000247To install the Quagga suite, issue the following command at your shell
paul718e3742002-12-13 20:15:29 +0000248prompt: @command{make install}.
249
250@example
251%
252% make install
253%
254@end example
255
paul7190f4e2003-08-12 12:40:20 +0000256Quagga daemons have their own terminal interface or VTY. After
paul718e3742002-12-13 20:15:29 +0000257installation, you have to setup each beast's port number to connect to
258them. Please add the following entries to @file{/etc/services}.
259
260@example
261zebrasrv 2600/tcp # zebra service
262zebra 2601/tcp # zebra vty
263ripd 2602/tcp # RIPd vty
264ripngd 2603/tcp # RIPngd vty
265ospfd 2604/tcp # OSPFd vty
266bgpd 2605/tcp # BGPd vty
267ospf6d 2606/tcp # OSPF6d vty
jardin5a514b12003-12-23 10:50:21 +0000268ospfapi 2607/tcp # ospfapi
269isisd 2608/tcp # ISISd vty
paul718e3742002-12-13 20:15:29 +0000270@end example
271
272If you use a FreeBSD newer than 2.2.8, the above entries are already
273added to @file{/etc/services} so there is no need to add it. If you
274specify a port number when starting the daemon, these entries may not be
275needed.
276
277You may need to make changes to the config files in
278@file{@value{INSTALL_PREFIX_ETC}/*.conf}. @xref{Config Commands}.