summaryrefslogtreecommitdiffstats
path: root/redhat/README.rpm_build.md
blob: db3c7d45c83f8e97702ee86a67fc83d7a2d45902 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
Building your own FreeRangeRouting RPM
======================================
(Tested on CentOS 6, CentOS 7 and Fedora 22.)

1. 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 install` on new Fedora instead of `yum install	`)
	
2. Checkout FRR under a **unpriviledged** user account

		git clone https://github.com/freerangerouting/frr.git frr

3. Run Bootstrap and make distribution tar.gz

		cd frr
		./bootstrap.sh
		./configure --with-pkg-extra-version=-MyRPMVersion
		make dist
			
	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
	mark your own unoffical build

4. 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/

5. 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 }

6. 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):

1. 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

2. If you want to run `watchfrr`, then configure `/etc/sysconfig/frr` 
   and uncomment the line with the daemons for `watchfrr` to monitor,
   then enable watchfrr

		chkconfig watchfrr on

3. Check your firewall / IPtables to make sure the routing protocols are
allowed.
		
4. 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)

1. Enable the daemons as needed to run after boot (Zebra is mandatory)
	
		systemctl enable zebra
		systemctl enable ospfd
		systemctl enable ospf6d
		systemctl enable bgpd
		... etc

	Note: There is no watchfrr on systemd based systems. Systemd contains
	the functionality of monitoring and restarting daemons.

2. Check your firewall / IPtables to make sure the routing protocols are
allowed.
		
3. Start the daemons (or reboot)

		systemctl start zebra
		systemctl start bgpd
		systemctl start ospfd
		... etc
			
Configuration is stored in `/etc/frr/*.conf` files.