|
|
||
|---|---|---|
| .. | ||
| .gitignore | ||
| bgpd.init | ||
| frr.logrotate | ||
| frr.pam | ||
| frr.spec.in | ||
| frr.sysconfig | ||
| isisd.init | ||
| ldpd.init | ||
| Makefile.am | ||
| ospf6d.init | ||
| ospfd.init | ||
| pimd.init | ||
| README.rpm_build.md | ||
| ripd.init | ||
| ripngd.init | ||
| watchfrr.init | ||
| zebra.init | ||
Building your own FreeRangeRouting RPM
(Tested on CentOS 6, CentOS 7 and Fedora 22.)
-
Install the following packages to build the RPMs:
yum install git autoconf automake libtool make gawk readline-devel \ texinfo dejagnu net-snmp-devel groff rpm-build net-snmp-devel \ libcap-devel texi2html(use
dnf installon new Fedora instead ofyum install) -
Checkout FRR under a unpriviledged user account
git clone https://github.com/freerangerouting/frr.git frr -
Run Bootstrap and make distribution tar.gz
cd frr ./bootstrap.sh ./configure --with-pkg-extra-version=-MyRPMVersion make distNote: configure parameters are not important for the RPM building - except the
with-pkg-extra-versionif you want to give the RPM a specific name to mark your own unoffical build -
Create RPM directory structure and populate with sources
mkdir rpmbuild mkdir rpmbuild/SOURCES mkdir rpmbuild/SPECS cp redhat/*.spec rpmbuild/SPECS/ cp frr*.tar.gz rpmbuild/SOURCES/ -
Edit rpm/SPECS/frr.spec with configuration as needed Look at the beginning of the file and adjust the following parameters to enable or disable features as required:
################# frr configure options #################### # with-feature options %{!?with_snmp: %global with_snmp 1 } %{!?with_vtysh: %global with_vtysh 1 } %{!?with_ospf_te: %global with_ospf_te 1 } %{!?with_opaque_lsa: %global with_opaque_lsa 1 } %{!?with_tcp_zebra: %global with_tcp_zebra 0 } %{!?with_vtysh: %global with_vtysh 1 } %{!?with_pam: %global with_pam 1 } %{!?with_ospfclient: %global with_ospfclient 1 } %{!?with_ospfapi: %global with_ospfapi 1 } %{!?with_irdp: %global with_irdp 1 } %{!?with_rtadv: %global with_rtadv 1 } %{!?with_isisd: %global with_isisd 1 } %{!?with_pimd: %global with_pimd 1 } %{!?with_mpls: %global with_mpls 0 } %{!?with_ldpd: %global with_ldpd 0 } %{!?with_shared: %global with_shared 1 } %{!?with_multipath: %global with_multipath 64 } %{!?frr_user: %global frr_user frr } %{!?vty_group: %global vty_group frrvt } %{!?with_fpm: %global with_fpm 0 } %{!?with_watchfrr: %global with_watchfrr 1 } -
Build the RPM
rpmbuild --define "_topdir `pwd`/rpmbuild" -ba rpmbuild/SPECS/frr.spec
DONE.
If all works correctly, then you should end up with the RPMs under rpmbuild/RPMS
and the Source RPM under rpmbuild/SRPMS
Enabling daemons after installation of the package:
init.d based systems (ie CentOS 6):
-
Enable the daemons as needed to run after boot (Zebra is mandatory)
chkconfig zebra on chkconfig ospfd on chkconfig ospf6d on chkconfig bgpd on ... etc -
If you want to run
watchfrr, then configure/etc/sysconfig/frrand uncomment the line with the daemons forwatchfrrto monitor, then enable watchfrrchkconfig watchfrr on -
Check your firewall / IPtables to make sure the routing protocols are allowed.
-
Start the daemons (or reboot)
service zebra start service bgpd start service ospfd start ... etc
Configuration is stored in /etc/frr/*.conf files.
systemd based systems (ie CentOS 7, Fedora 22)
-
Enable the daemons as needed to run after boot (Zebra is mandatory)
systemctl enable zebra systemctl enable ospfd systemctl enable ospf6d systemctl enable bgpd ... etcNote: There is no watchfrr on systemd based systems. Systemd contains the functionality of monitoring and restarting daemons.
-
Check your firewall / IPtables to make sure the routing protocols are allowed.
-
Start the daemons (or reboot)
systemctl start zebra systemctl start bgpd systemctl start ospfd ... etc
Configuration is stored in /etc/frr/*.conf files.