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