]>
Commit | Line | Data |
---|---|---|
447a8fe9 | 1 | Building your own FRRouting RPM |
c115e4a4 | 2 | ====================================== |
3630ef2d | 3 | (Tested on CentOS 6, CentOS 7 and Fedora 24.) |
f755bf6d | 4 | |
f9e0332e MW |
5 | 1. On CentOS 6 (which doesn't provide a bison/automake/autoconf of a recent enough version): |
6 | - Check out ../doc/Building_FRR_on_CentOS6.md for details on installing | |
7 | a bison/automake/autoconf to support frr building. | |
8 | ||
9 | Newer automake/autoconf/bison is only needed to build the rpm and is | |
10 | **not** needed to install the binary rpm package | |
11 | ||
de481ae6 MW |
12 | 2. Install the build packages as documented in doc/Building_on_xxxxx.md |
13 | and the following additional packages: | |
f755bf6d | 14 | |
de481ae6 | 15 | yum install rpm-build net-snmp-devel pam-devel |
58f20b90 MW |
16 | |
17 | Additionally, on systems with systemd (CentOS 7, Fedora) | |
18 | ||
19 | yum install systemd-devel | |
f755bf6d | 20 | |
94c00335 | 21 | (use `dnf install` on new Fedora instead of `yum install`) |
58f20b90 | 22 | |
f9e0332e | 23 | 3. Checkout FRR under a **unpriviledged** user account |
f755bf6d | 24 | |
94c00335 | 25 | git clone https://github.com/frrouting/frr.git frr |
f755bf6d | 26 | |
f9e0332e | 27 | 4. Run Bootstrap and make distribution tar.gz |
f755bf6d | 28 | |
94c00335 MW |
29 | cd frr |
30 | ./bootstrap.sh | |
31 | ./configure --with-pkg-extra-version=-MyRPMVersion | |
78b4c546 | 32 | make SPHINXBUILD=sphinx-build2.7 dist |
94c00335 MW |
33 | |
34 | Note: configure parameters are not important for the RPM building - except the `with-pkg-extra-version` if you want to give the RPM a specific name to | |
35 | mark your own unoffical build | |
f755bf6d | 36 | |
f9e0332e | 37 | 5. Create RPM directory structure and populate with sources |
f755bf6d | 38 | |
94c00335 MW |
39 | mkdir rpmbuild |
40 | mkdir rpmbuild/SOURCES | |
41 | mkdir rpmbuild/SPECS | |
42 | cp redhat/*.spec rpmbuild/SPECS/ | |
43 | cp frr*.tar.gz rpmbuild/SOURCES/ | |
f755bf6d | 44 | |
f9e0332e | 45 | 6. Edit rpm/SPECS/frr.spec with configuration as needed |
94c00335 MW |
46 | Look at the beginning of the file and adjust the following parameters to enable or disable features as required: |
47 | ||
f9e0332e | 48 | ############### FRRouting (FRR) configure options ################# |
94c00335 | 49 | # with-feature options |
f9e0332e MW |
50 | %{!?with_pam: %global with_pam 0 } |
51 | %{!?with_ospfclient: %global with_ospfclient 1 } | |
52 | %{!?with_ospfapi: %global with_ospfapi 1 } | |
53 | %{!?with_irdp: %global with_irdp 1 } | |
54 | %{!?with_rtadv: %global with_rtadv 1 } | |
55 | %{!?with_ldpd: %global with_ldpd 1 } | |
5a76db68 MW |
56 | %{!?with_nhrpd: %global with_nhrpd 1 } |
57 | %{!?with_eigrp: %global with_eigrpd 1 } | |
f9e0332e MW |
58 | %{!?with_shared: %global with_shared 1 } |
59 | %{!?with_multipath: %global with_multipath 256 } | |
60 | %{!?frr_user: %global frr_user frr } | |
61 | %{!?vty_group: %global vty_group frrvty } | |
62 | %{!?with_fpm: %global with_fpm 0 } | |
63 | %{!?with_watchfrr: %global with_watchfrr 1 } | |
64 | %{!?with_bgp_vnc: %global with_bgp_vnc 0 } | |
65 | %{!?with_pimd: %global with_pimd 1 } | |
c8cd451c | 66 | %{!?with_rpki: %global with_rpki 0 } |
f9e0332e MW |
67 | |
68 | 7. Build the RPM | |
f755bf6d | 69 | |
94c00335 | 70 | rpmbuild --define "_topdir `pwd`/rpmbuild" -ba rpmbuild/SPECS/frr.spec |
f755bf6d | 71 | |
c8cd451c MW |
72 | If building with RPKI, then download and install the additional RPKI |
73 | packages from | |
74 | https://ci1.netdef.org/browse/RPKI-RTRLIB/latestSuccessful/artifact | |
75 | ||
f755bf6d MW |
76 | DONE. |
77 | ||
94c00335 MW |
78 | If all works correctly, then you should end up with the RPMs under |
79 | `rpmbuild/RPMS` and the Source RPM under `rpmbuild/SRPMS` | |
f755bf6d MW |
80 | |
81 | ||
82 | Enabling daemons after installation of the package: | |
83 | --------------------------------------------------- | |
84 | ||
85 | ### init.d based systems (ie CentOS 6): | |
86 | ||
3630ef2d | 87 | 1. Edit /etc/frr/daemons and enable required routing daemons (Zebra is probably needed for most deployments, so make sure to enable it.) |
f755bf6d | 88 | |
3630ef2d MW |
89 | 2. Enable the daemons as needed to run after boot (Zebra is mandatory) |
90 | ||
91 | chkconfig frr on | |
f755bf6d MW |
92 | |
93 | 3. Check your firewall / IPtables to make sure the routing protocols are | |
94 | allowed. | |
94c00335 | 95 | |
3630ef2d | 96 | 5. Start the FRR daemons (or reboot) |
f755bf6d | 97 | |
3630ef2d | 98 | service frr start |
94c00335 | 99 | |
3630ef2d | 100 | Configuration is stored in `/etc/frr/*.conf` files and daemon selection is stored in `/etc/frr/daemons`. |
f755bf6d MW |
101 | |
102 | ||
3630ef2d | 103 | ### systemd based systems (ie CentOS 7, Fedora 24) |
f755bf6d | 104 | |
3630ef2d MW |
105 | 1. Edit /etc/frr/daemons and enable required routing daemons (Zebra is probably needed for most deployments, so make sure to enable it.) |
106 | ||
107 | 2. Enable the frr daemons to run after boot. | |
94c00335 | 108 | |
3630ef2d | 109 | systemctl enable frr |
f755bf6d MW |
110 | |
111 | 2. Check your firewall / IPtables to make sure the routing protocols are | |
112 | allowed. | |
94c00335 | 113 | |
f755bf6d MW |
114 | 3. Start the daemons (or reboot) |
115 | ||
3630ef2d | 116 | systemctl start frr |
94c00335 | 117 | |
3630ef2d | 118 | Configuration is stored in `/etc/frr/*.conf` files and daemon selection is stored in `/etc/frr/daemons`. |
f755bf6d | 119 |