]> git.proxmox.com Git - mirror_frr.git/blob - doc/developer/building-frr-for-centos6.rst
zebra: include lib/queue.h in zebra dataplane
[mirror_frr.git] / doc / developer / building-frr-for-centos6.rst
1 CentOS 6
2 ========================================
3
4 (As an alternative to this installation, you may prefer to create a FRR
5 rpm package yourself and install that package instead. See instructions
6 in redhat/README.rpm\_build.md on how to build a rpm package)
7
8 Instructions are tested with ``CentOS 6.8`` on ``x86_64`` platform
9
10 Warning:
11 --------
12 ``CentOS 6`` is very old and not fully supported by the FRR community
13 anymore. Building FRR takes multiple manual steps to update the build
14 system with newer packages than what's available from the archives.
15 However, the built packages can still be installed afterwards on
16 a standard ``CentOS 6`` without any special packages.
17
18 Support for CentOS 6 is now on a best-effort base by the community.
19
20 CentOS 6 restrictions:
21 ----------------------
22
23 - PIMd is not supported on ``CentOS 6``. Upgrade to ``CentOS 7`` if
24 PIMd is needed
25 - MPLS is not supported on ``CentOS 6``. MPLS requires Linux Kernel 4.5
26 or higher (LDP can be built, but may have limited use without MPLS)
27 - Zebra is unable to detect what bridge/vrf an interface is associcated
28 with (IFLA\_INFO\_SLAVE\_KIND does not exist in the kernel headers,
29 you can use a newer kernel + headers to get this functionality)
30 - frr\_reload.py will not work, as this requires Python 2.7, and CentOS
31 6 only has 2.6. You can install Python 2.7 via IUS, but it won't work
32 properly unless you compile and install the ipaddr package for it.
33 - Building the package requires Sphinx >= 1.1. Only a non-standard
34 package provides a newer sphinx and requires manual installation
35 (see below)
36
37
38 Install required packages
39 -------------------------
40
41 Add packages:
42
43 .. code-block:: shell
44
45 sudo yum install git autoconf automake libtool make gawk \
46 readline-devel texinfo net-snmp-devel groff pkgconfig \
47 json-c-devel pam-devel flex epel-release c-ares-devel
48
49 Install newer version of bison (CentOS 6 package source is too old) from CentOS
50 7:
51
52 .. code-block:: shell
53
54 sudo yum install rpm-build
55 curl -O http://vault.centos.org/7.0.1406/os/Source/SPackages/bison-2.7-4.el7.src.rpm
56 rpmbuild --rebuild ./bison-2.7-4.el7.src.rpm
57 sudo yum install ./rpmbuild/RPMS/x86_64/bison-2.7-4.el6.x86_64.rpm
58 rm -rf rpmbuild
59
60 Install newer version of autoconf and automake (Package versions are too old):
61
62 .. code-block:: shell
63
64 curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
65 tar xvf autoconf-2.69.tar.gz
66 cd autoconf-2.69
67 ./configure --prefix=/usr
68 make
69 sudo make install
70 cd ..
71
72 curl -O http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz
73 tar xvf automake-1.15.tar.gz
74 cd automake-1.15
75 ./configure --prefix=/usr
76 make
77 sudo make install
78 cd ..
79
80 Install ``Python 2.7`` in parallel to default 2.6. Make sure you've install
81 EPEL (``epel-release`` as above). Then install current ``python27``:
82 ``python27-devel`` and ``pytest``
83
84 .. code-block:: shell
85
86 sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
87 sudo rpm -ivh https://centos6.iuscommunity.org/ius-release.rpm
88 sudo yum install python27 python27-pip python27-devel
89 sudo pip2.7 install pytest
90
91 Please note that ``CentOS 6`` needs to keep python pointing to version 2.6 for
92 ``yum`` to keep working, so don't create a symlink for python2.7 to python.
93
94 Install newer ``Sphinx-Build`` based on ``Python 2.7``.
95
96 Create a new repo ``/etc/yum.repos.d/puias6.repo`` with the following contents:
97
98 ::
99
100 ### Name: RPM Repository for RHEL 6 - PUIAS (used for Sphinx-Build)
101 ### URL: http://springdale.math.ias.edu/data/puias/computational
102 [puias-computational]
103 name = RPM Repository for RHEL 6 - Sphinx-Build
104 baseurl = http://springdale.math.ias.edu/data/puias/computational/$releasever/$basearch
105 #mirrorlist =
106 enabled = 1
107 protect = 0
108 gpgkey =
109 gpgcheck = 0
110
111 Update rpm database & Install newer sphinx
112
113 .. code-block:: shell
114
115 sudo yum update
116 sudo yum install python27-sphinx
117
118 .. include:: building-libyang.rst
119
120 Get FRR, compile it and install it (from Git)
121 ---------------------------------------------
122
123 **This assumes you want to build and install FRR from source and not using any
124 packages**
125
126 Add frr groups and user
127 ^^^^^^^^^^^^^^^^^^^^^^^
128
129 .. code-block:: shell
130
131 sudo groupadd -g 92 frr
132 sudo groupadd -r -g 85 frrvty
133 sudo useradd -u 92 -g 92 -M -r -G frrvty -s /sbin/nologin \
134 -c "FRR FRRouting suite" -d /var/run/frr frr
135
136 Download Source, configure and compile it
137 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
138
139 (You may prefer different options on configure statement. These are just
140 an example.)
141
142 .. code-block:: shell
143
144 git clone https://github.com/frrouting/frr.git frr
145 cd frr
146 ./bootstrap.sh
147 ./configure \
148 --bindir=/usr/bin \
149 --sbindir=/usr/lib/frr \
150 --sysconfdir=/etc/frr \
151 --libdir=/usr/lib/frr \
152 --libexecdir=/usr/lib/frr \
153 --localstatedir=/var/run/frr \
154 --with-moduledir=/usr/lib/frr/modules \
155 --disable-pimd \
156 --enable-snmp=agentx \
157 --enable-multipath=64 \
158 --enable-user=frr \
159 --enable-group=frr \
160 --enable-vty-group=frrvty \
161 --disable-exampledir \
162 --disable-ldpd \
163 --enable-fpm \
164 --with-pkg-git-version \
165 --with-pkg-extra-version=-MyOwnFRRVersion \
166 SPHINXBUILD=sphinx-build2.7
167 make
168 make check PYTHON=/usr/bin/python2.7
169 sudo make install
170
171 Create empty FRR configuration files
172 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
173
174 .. code-block:: shell
175
176 sudo mkdir /var/log/frr
177 sudo mkdir /etc/frr
178
179 For integrated config file:
180
181 .. code-block:: shell
182
183 sudo touch /etc/frr/frr.conf
184
185 For individual config files:
186
187 .. note:: Integrated config is preferred to individual config.
188
189 .. code-block:: shell
190
191 sudo touch /etc/frr/babeld.conf
192 sudo touch /etc/frr/bfdd.conf
193 sudo touch /etc/frr/bgpd.conf
194 sudo touch /etc/frr/eigrpd.conf
195 sudo touch /etc/frr/isisd.conf
196 sudo touch /etc/frr/ldpd.conf
197 sudo touch /etc/frr/nhrpd.conf
198 sudo touch /etc/frr/ospf6d.conf
199 sudo touch /etc/frr/ospfd.conf
200 sudo touch /etc/frr/pbrd.conf
201 sudo touch /etc/frr/pimd.conf
202 sudo touch /etc/frr/ripd.conf
203 sudo touch /etc/frr/ripngd.conf
204 sudo touch /etc/frr/staticd.conf
205 sudo touch /etc/frr/zebra.conf
206 sudo chown -R frr:frr /etc/frr/
207 sudo touch /etc/frr/vtysh.conf
208 sudo chown frr:frrvty /etc/frr/vtysh.conf
209 sudo chmod 640 /etc/frr/*.conf
210
211 Install daemon config file
212 ^^^^^^^^^^^^^^^^^^^^^^^^^^
213
214 .. code-block:: shell
215
216 sudo install -p -m 644 redhat/daemons /etc/frr/
217 sudo chown frr:frr /etc/frr/daemons
218
219 Edit /etc/frr/daemons as needed to select the required daemons
220 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
221
222 Look for the section with ``watchfrr_enable=...`` and ``zebra=...`` etc.
223 Enable the daemons as required by changing the value to ``yes``
224
225 Enable IP & IPv6 forwarding
226 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
227
228 Edit :file:`/etc/sysctl.conf` and set the following values (ignore the other
229 settings)::
230
231 # Controls IP packet forwarding
232 net.ipv4.ip_forward = 1
233 net.ipv6.conf.all.forwarding=1
234
235 # Controls source route verification
236 net.ipv4.conf.default.rp_filter = 0
237
238 Load the modifed sysctl's on the system:
239
240 .. code-block:: shell
241
242 sudo sysctl -p /etc/sysctl.d/90-routing-sysctl.conf
243
244 Add init.d startup files
245 ^^^^^^^^^^^^^^^^^^^^^^^^
246
247 .. code-block:: shell
248
249 sudo install -p -m 755 redhat/frr.init /etc/init.d/frr
250 sudo chkconfig --add frr
251
252 Enable FRR daemon at startup
253 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
254
255 .. code-block:: shell
256
257 sudo chkconfig frr on
258
259 Start FRR manually (or reboot)
260 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
261
262 .. code-block:: shell
263
264 sudo /etc/init.d/frr start