]> git.proxmox.com Git - mirror_frr.git/blob - doc/developer/building-frr-for-centos6.rst
doc: move rpm build doc to dev docs
[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 associcated
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 gawk \
47 readline-devel texinfo net-snmp-devel groff pkgconfig \
48 json-c-devel pam-devel flex epel-release c-ares-devel
49
50 Install newer version of bison (CentOS 6 package source is too old) from CentOS
51 7:
52
53 .. code-block:: shell
54
55 sudo yum install rpm-build
56 curl -O http://vault.centos.org/7.0.1406/os/Source/SPackages/bison-2.7-4.el7.src.rpm
57 rpmbuild --rebuild ./bison-2.7-4.el7.src.rpm
58 sudo yum install ./rpmbuild/RPMS/x86_64/bison-2.7-4.el6.x86_64.rpm
59 rm -rf rpmbuild
60
61 Install newer version of autoconf and automake (Package versions are too old):
62
63 .. code-block:: shell
64
65 curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
66 tar xvf autoconf-2.69.tar.gz
67 cd autoconf-2.69
68 ./configure --prefix=/usr
69 make
70 sudo make install
71 cd ..
72
73 curl -O http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz
74 tar xvf automake-1.15.tar.gz
75 cd automake-1.15
76 ./configure --prefix=/usr
77 make
78 sudo make install
79 cd ..
80
81 Install ``Python 2.7`` in parallel to default 2.6. Make sure you've install
82 EPEL (``epel-release`` as above). Then install current ``python27``:
83 ``python27-devel`` and ``pytest``
84
85 .. code-block:: shell
86
87 sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
88 sudo rpm -ivh https://centos6.iuscommunity.org/ius-release.rpm
89 sudo yum install python27 python27-pip python27-devel
90 sudo pip2.7 install pytest
91
92 Please note that ``CentOS 6`` needs to keep python pointing to version 2.6 for
93 ``yum`` to keep working, so don't create a symlink for python2.7 to python.
94
95 Install newer ``Sphinx-Build`` based on ``Python 2.7``.
96
97 Create a new repo ``/etc/yum.repos.d/puias6.repo`` with the following contents:
98
99 ::
100
101 ### Name: RPM Repository for RHEL 6 - PUIAS (used for Sphinx-Build)
102 ### URL: http://springdale.math.ias.edu/data/puias/computational
103 [puias-computational]
104 name = RPM Repository for RHEL 6 - Sphinx-Build
105 baseurl = http://springdale.math.ias.edu/data/puias/computational/$releasever/$basearch
106 #mirrorlist =
107 enabled = 1
108 protect = 0
109 gpgkey =
110 gpgcheck = 0
111
112 Update rpm database & Install newer sphinx
113
114 .. code-block:: shell
115
116 sudo yum update
117 sudo yum install python27-sphinx
118
119 .. include:: building-libyang.rst
120
121 Get FRR, compile it and install it (from Git)
122 ---------------------------------------------
123
124 **This assumes you want to build and install FRR from source and not using any
125 packages**
126
127 Add frr groups and user
128 ^^^^^^^^^^^^^^^^^^^^^^^
129
130 .. code-block:: shell
131
132 sudo groupadd -g 92 frr
133 sudo groupadd -r -g 85 frrvty
134 sudo useradd -u 92 -g 92 -M -r -G frrvty -s /sbin/nologin \
135 -c "FRR FRRouting suite" -d /var/run/frr frr
136
137 Download Source, configure and compile it
138 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
139
140 (You may prefer different options on configure statement. These are just
141 an example.)
142
143 .. code-block:: shell
144
145 git clone https://github.com/frrouting/frr.git frr
146 cd frr
147 ./bootstrap.sh
148 ./configure \
149 --bindir=/usr/bin \
150 --sbindir=/usr/lib/frr \
151 --sysconfdir=/etc/frr \
152 --libdir=/usr/lib/frr \
153 --libexecdir=/usr/lib/frr \
154 --localstatedir=/var/run/frr \
155 --with-moduledir=/usr/lib/frr/modules \
156 --disable-pimd \
157 --enable-snmp=agentx \
158 --enable-multipath=64 \
159 --enable-user=frr \
160 --enable-group=frr \
161 --enable-vty-group=frrvty \
162 --disable-exampledir \
163 --disable-ldpd \
164 --enable-fpm \
165 --with-pkg-git-version \
166 --with-pkg-extra-version=-MyOwnFRRVersion \
167 SPHINXBUILD=sphinx-build2.7
168 make
169 make check PYTHON=/usr/bin/python2.7
170 sudo make install
171
172 Create empty FRR configuration files
173 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
174
175 .. code-block:: shell
176
177 sudo mkdir /var/log/frr
178 sudo mkdir /etc/frr
179
180 For integrated config file:
181
182 .. code-block:: shell
183
184 sudo touch /etc/frr/frr.conf
185
186 For individual config files:
187
188 .. note:: Integrated config is preferred to individual config.
189
190 .. code-block:: shell
191
192 sudo touch /etc/frr/babeld.conf
193 sudo touch /etc/frr/bfdd.conf
194 sudo touch /etc/frr/bgpd.conf
195 sudo touch /etc/frr/eigrpd.conf
196 sudo touch /etc/frr/isisd.conf
197 sudo touch /etc/frr/ldpd.conf
198 sudo touch /etc/frr/nhrpd.conf
199 sudo touch /etc/frr/ospf6d.conf
200 sudo touch /etc/frr/ospfd.conf
201 sudo touch /etc/frr/pbrd.conf
202 sudo touch /etc/frr/pimd.conf
203 sudo touch /etc/frr/ripd.conf
204 sudo touch /etc/frr/ripngd.conf
205 sudo touch /etc/frr/staticd.conf
206 sudo touch /etc/frr/zebra.conf
207 sudo chown -R frr:frr /etc/frr/
208 sudo touch /etc/frr/vtysh.conf
209 sudo chown frr:frrvty /etc/frr/vtysh.conf
210 sudo chmod 640 /etc/frr/*.conf
211
212 Install daemon config file
213 ^^^^^^^^^^^^^^^^^^^^^^^^^^
214
215 .. code-block:: shell
216
217 sudo install -p -m 644 redhat/daemons /etc/frr/
218 sudo chown frr:frr /etc/frr/daemons
219
220 Edit /etc/frr/daemons as needed to select the required daemons
221 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
222
223 Look for the section with ``watchfrr_enable=...`` and ``zebra=...`` etc.
224 Enable the daemons as required by changing the value to ``yes``
225
226 Enable IP & IPv6 forwarding
227 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
228
229 Edit :file:`/etc/sysctl.conf` and set the following values (ignore the other
230 settings)::
231
232 # Controls IP packet forwarding
233 net.ipv4.ip_forward = 1
234 net.ipv6.conf.all.forwarding=1
235
236 # Controls source route verification
237 net.ipv4.conf.default.rp_filter = 0
238
239 Load the modifed sysctl's on the system:
240
241 .. code-block:: shell
242
243 sudo sysctl -p /etc/sysctl.d/90-routing-sysctl.conf
244
245 Add init.d startup files
246 ^^^^^^^^^^^^^^^^^^^^^^^^
247
248 .. code-block:: shell
249
250 sudo install -p -m 755 redhat/frr.init /etc/init.d/frr
251 sudo chkconfig --add frr
252
253 Enable FRR daemon at startup
254 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
255
256 .. code-block:: shell
257
258 sudo chkconfig frr on
259
260 Start FRR manually (or reboot)
261 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
262
263 .. code-block:: shell
264
265 sudo /etc/init.d/frr start