summaryrefslogtreecommitdiffstats
path: root/redhat/README.rpm_build.md
blob: a3f095786d817f11cdc93450982dd0ffadcca0e3 (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
Building your own FRRouting RPM
======================================
(Tested on CentOS 6, CentOS 7 and Fedora 24.)

1. On CentOS 6 (which doesn't provide a bison/automake/autoconf of a recent enough version):
    - Check out ../doc/developer/building-frr-for-centos6.rst for details on installing
    a bison/automake/autoconf to support frr building.

    Newer automake/autoconf/bison is only needed to build the rpm and is
    **not** needed to install the binary rpm package

2. Install the build packages as documented in doc/developer/building-frr-for-xxxxx.rst and the following additional packages:

        yum install rpm-build net-snmp-devel pam-devel libcap-devel

    Additionally, on systems with systemd (CentOS 7, Fedora)

        yum install systemd-devel

    (use `dnf install` on new Fedora instead of `yum install`)

3. Checkout FRR under a **unpriviledged** user account

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

4. Run Bootstrap and make distribution tar.gz

        cd frr
        ./bootstrap.sh
        ./configure --with-pkg-extra-version=-MyRPMVersion \
            SPHINXBUILD=sphinx-build2.7
        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

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

6. 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:
    
        ############### FRRouting (FRR) configure options #################
        # with-feature options
        %{!?with_pam:           %global  with_pam           0 }
        %{!?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_ldpd:          %global  with_ldpd          1 }
        %{!?with_nhrpd:         %global  with_nhrpd         1 }
        %{!?with_eigrp:         %global  with_eigrpd        1 }
        %{!?with_shared:        %global  with_shared        1 }
        %{!?with_multipath:     %global  with_multipath     256 }
        %{!?frr_user:           %global  frr_user           frr }
        %{!?vty_group:          %global  vty_group          frrvty }
        %{!?with_fpm:           %global  with_fpm           0 }
        %{!?with_watchfrr:      %global  with_watchfrr      1 }
        %{!?with_bgp_vnc:       %global  with_bgp_vnc       0 }
        %{!?with_pimd:          %global  with_pimd          1 }
        %{!?with_rpki:          %global  with_rpki          0 }

7. Build the RPM

        rpmbuild --define "_topdir `pwd`/rpmbuild" -ba rpmbuild/SPECS/frr.spec

   If building with RPKI, then download and install the additional RPKI
   packages from
        https://ci1.netdef.org/browse/RPKI-RTRLIB/latestSuccessful/artifact

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. Edit /etc/frr/daemons and enable required routing daemons (Zebra is probably needed for most deployments, so make sure to enable it.)

2. Enable the daemons as needed to run after boot (Zebra is mandatory)
    
        chkconfig frr on

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

        service frr start
            
Configuration is stored in `/etc/frr/*.conf` files and daemon selection is stored in `/etc/frr/daemons`.


### systemd based systems (ie CentOS 7, Fedora 24)

1. Edit /etc/frr/daemons and enable required routing daemons (Zebra is probably needed for most deployments, so make sure to enable it.)
 
2. Enable the frr daemons to run after boot.
    
        systemctl enable frr

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

        systemctl start frr
            
Configuration is stored in `/etc/frr/*.conf` files and daemon selection is stored in `/etc/frr/daemons`.