Import Upstream version 1.2.2
[quagga-debian.git] / redhat / README.rpm_build.md
1 Building your own Quagga RPM
2 ============================
3 (Tested on CentOS 6, CentOS 7 and Fedora 22.)
4
5 1. Install the following packages to build the RPMs:
6
7                 yum install git autoconf automake libtool make gawk readline-devel \
8                 texinfo dejagnu net-snmp-devel groff rpm-build net-snmp-devel \
9                 libcap-devel texi2html
10
11         (use `dnf install` on new Fedora instead of `yum install        `)
12         
13 2. Checkout Quagga under a **unpriviledged** user account
14
15                 git clone git://git.savannah.nongnu.org/quagga.git quagga
16
17 3. Run Bootstrap and make distribution tar.gz
18
19                 cd quagga
20                 ./bootstrap.sh
21                 ./configure --with-pkg-extra-version=-MyRPMVersion
22                 make dist
23                         
24         Note: configure parameters are not important for the RPM building - except the
25         `with-pkg-extra-version` if you want to give the RPM a specific name to
26         mark your own unoffical build
27
28 4. Create RPM directory structure and populate with sources
29
30                 mkdir rpmbuild
31                 mkdir rpmbuild/SOURCES
32                 mkdir rpmbuild/SPECS
33                 cp redhat/*.spec rpmbuild/SPECS/
34                 cp quagga*.tar.gz rpmbuild/SOURCES/
35
36 5. Edit rpm/SPECS/quagga.spec with configuration as needed
37         Look at the beginning of the file and adjust the following parameters to enable
38         or disable features as required:
39         
40                 ################# Quagga configure options ####################
41                 # with-feature options
42         %{!?with_snmp:         %global  with_snmp       1 }
43         %{!?with_vtysh:        %global  with_vtysh      1 }
44         %{!?with_ospf_te:      %global  with_ospf_te    1 }
45                 %{!?with_opaque_lsa:   %global  with_opaque_lsa 1 }
46                 %{!?with_tcp_zebra:        %global  with_tcp_zebra  0 }
47                 %{!?with_vtysh:        %global  with_vtysh      1 }
48                 %{!?with_pam:          %global  with_pam        1 }
49         %{!?with_ospfclient:   %global  with_ospfclient 1 }
50                 %{!?with_ospfapi:      %global  with_ospfapi    1 }
51                 %{!?with_irdp:         %global  with_irdp       1 }
52                 %{!?with_rtadv:        %global  with_rtadv      1 }
53                 %{!?with_isisd:        %global  with_isisd      1 }
54                 %{!?with_pimd:         %global  with_pimd       1 }
55                 %{!?with_shared:       %global  with_shared     1 }
56                 %{!?with_multipath:    %global  with_multipath  64 }
57                 %{!?quagga_user:       %global  quagga_user     quagga }
58                 %{!?vty_group:         %global  vty_group       quaggavt }
59                 %{!?with_fpm:          %global  with_fpm        0 }
60                 %{!?with_watchquagga:  %global  with_watchquagga 1 }
61
62 6. Build the RPM
63
64                 rpmbuild --define "_topdir `pwd`/rpmbuild" -ba rpmbuild/SPECS/quagga.spec
65
66 DONE.
67
68 If all works correctly, then you should end up with the RPMs under `rpmbuild/RPMS`
69 and the Source RPM under `rpmbuild/SRPMS`
70
71
72 Enabling daemons after installation of the package:
73 ---------------------------------------------------
74
75 ### init.d based systems (ie CentOS 6):
76
77 1. Enable the daemons as needed to run after boot (Zebra is mandatory)
78         
79                 chkconfig zebra on
80                 chkconfig ospfd on
81                 chkconfig ospf6d on
82                 chkconfig bgpd on
83                 ... etc
84
85 2. If you want to run `watchquagga`, then configure `/etc/sysconfig/quagga` 
86    and uncomment the line with the daemons for `watchquagga` to monitor,
87    then enable watchquagga
88
89                 chkconfig watchquagga on
90
91 3. Check your firewall / IPtables to make sure the routing protocols are
92 allowed.
93                 
94 4. Start the daemons (or reboot)
95
96                 service zebra start
97                 service bgpd start
98                 service ospfd start
99                 ... etc
100                         
101 Configuration is stored in `/etc/quagga/*.conf` files.
102
103
104 ### systemd based systems (ie CentOS 7, Fedora 22)
105
106 1. Enable the daemons as needed to run after boot (Zebra is mandatory)
107         
108                 systemctl enable zebra
109                 systemctl enable ospfd
110                 systemctl enable ospf6d
111                 systemctl enable bgpd
112                 ... etc
113
114         Note: There is no watchquagga on systemd based systems. Systemd contains
115         the functionality of monitoring and restarting daemons.
116
117 2. Check your firewall / IPtables to make sure the routing protocols are
118 allowed.
119                 
120 3. Start the daemons (or reboot)
121
122                 systemctl start zebra
123                 systemctl start bgpd
124                 systemctl start ospfd
125                 ... etc
126                         
127 Configuration is stored in `/etc/quagga/*.conf` files.
128