04. FRR编译安装
librtr:
库连接:
https://github.com/rtrlib/rtrlib
库版本使用0.8.0
git clone https://github.com/rtrlib/rtrlib.git
cd rtrlib
git checkout v0.8.0
依赖的RPM
yum install rpm-build cmake doxygen libssh-devel
vim /etc/rpm/macros.dist
%dist .oe2203sp3
RPM build 过程
cd rtrlib
tar zcvf librtr-0.8.0.tar.gz *
mkdir rpmbuild
mkdir rpmbuild/SOURCES rpmbuild/SPECS
cd rtrlib
cp redhat/SPECS/librtr.spec rpmbuild/SPECS
cp librtr-0.8.0.tar.gz rpmbuild/SOURCES
rpmbuild --define "_topdir `pwd`/rpmbuild" -ba rpmbuild/SPECS/librtr.spec
生产的RPM包
./SRPMS/librtr-0.8.0-1.oe2203sp3.src.rpm
./RPMS/noarch/librtr-doc-0.8.0-1.oe2203sp3.noarch.rpm
./RPMS/x86_64/librtr-0.8.0-1.oe2203sp3.x86_64.rpm
./RPMS/x86_64/librtr-devel-0.8.0-1.oe2203sp3.x86_64.rpm
./RPMS/x86_64/rtr-tools-0.8.0-1.oe2203sp3.x86_64.rpm
libyang
库连接:
https://github.com/CESNET/libyang
库版本使用v2.1.148
git clone https://github.com/CESNET/libyang.git
cd libyang
git checkout v2.1.148
依赖的RPM
vim /etc/rpm/macros.dist
%dist .oe2203sp3
%rhel 7
RPM build 过程
yum install cmake\(cmocka\)
mv libyang/ libyang-2.1.148
tar zcvf libyang-2.1.148.tar.gz libyang-2.1.148
cd libyang-2.1.148
mkdir rpmbuild
cd rpmbuild
mkdir SOURCES SPECS
cd libyang-2.1.148
cp ./distro/pkg/rpm/libyang.spec rpmbuild/SPECS/
vim SPECS/libyang.spec
Version: 2.1.148
Release: 1%{?dist}
cp ../libyang-2.1.148.tar.gz rpmbuild/SOURCES/
rpmbuild --define "_topdir `pwd`/rpmbuild" -ba rpmbuild/SPECS/libyang.spec
生产的RPM包
./SRPMS/libyang-2.1.148-1.oe2203sp3.src.rpm
./RPMS/x86_64/libyang-devel-2.1.148-1.oe2203sp3.x86_64.rpm
./RPMS/x86_64/libyang-debuginfo-2.1.148-1.oe2203sp3.x86_64.rpm
./RPMS/x86_64/libyang-tools-2.1.148-1.oe2203sp3.x86_64.rpm
./RPMS/x86_64/libyang-devel-doc-2.1.148-1.oe2203sp3.x86_64.rpm
./RPMS/x86_64/libyang-debugsource-2.1.148-1.oe2203sp3.x86_64.rpm
./RPMS/x86_64/libyang-2.1.148-1.oe2203sp3.x86_64.rpm
frr
库连接
https://github.com/FRRouting/frr
库版本使用9.1
git clone https://github.com/FRRouting/frr.git
cd frr
git checkout frr-9.1
库版本说明文档
打包文档:https://docs.frrouting.org/projects/dev-guide/en/latest/packaging-redhat.html
编译文档:https://docs.frrouting.org/projects/dev-guide/en/latest/building-frr-for-centos8.html
依赖的RPM
yum install rpm-build net-snmp-devel pam-devel libcap-devel automake \
libtool json-c-devel json-c protobuf-c protobuf-devel protobuf-c-devel \
readline-devel python3-devel python3-sphinx c-ares-devel systemd-devel texinfo
rpm -ivh libyang-2.1.148-1.oe2203sp3.x86_64.rpm
rpm -ivh libyang-devel-2.1.148-1.oe2203sp3.x86_64.rpm
rpm -ivh libyang-tools-2.1.148-1.oe2203sp3.x86_64.rpm
rpm -ivh librtr-0.8.0-1.oe2203sp3.x86_64.rpm
rpm -ivh librtr-devel-0.8.0-1.oe2203sp3.x86_64.rpm
rpm -ivh rtr-tools-0.8.0-1.oe2203sp3.x86_64.rpm
vim /etc/rpm/macros.dist
%rhel 8
%dist .oe2203sp3
RPM build 过程
cd frr
./bootstrap.sh
./configure
make dist
mkdir rpmbuild
mkdir rpmbuild/SOURCES
mkdir rpmbuild/SPECS
cp redhat/*.spec rpmbuild/SPECS/
cp frr*.tar.gz rpmbuild/SOURCES/
修改frr.spec文件:
vim rpmbuild/SPECS/frr.spec
%{!?with_bgp_vnc: %global with_bgp_vnc 1 }
%{!?with_cumulus: %global with_cumulus 1 }
%{!?with_pam: %global with_pam 1 }
# pathfix.py 在openeuler在python3-devel-3.9.9-28.oe2203sp3.x86_64
#%if 0%{?rhel} > 7
#platform-python-devel is needed for /usr/bin/pathfix.py
#BuildRequires: platform-python-devel
#%endif
rpmbuild --define "_topdir `pwd`/rpmbuild" -ba rpmbuild/SPECS/frr.spec
生产的RPM包
./SRPMS/frr-9.1-01.oe2203sp3.src.rpm
./RPMS/x86_64/frr-snmp-9.1-01.oe2203sp3.x86_64.rpm
./RPMS/x86_64/frr-debuginfo-9.1-01.oe2203sp3.x86_64.rpm
./RPMS/x86_64/frr-pythontools-9.1-01.oe2203sp3.x86_64.rpm
./RPMS/x86_64/frr-debugsource-9.1-01.oe2203sp3.x86_64.rpm
./RPMS/x86_64/frr-contrib-9.1-01.oe2203sp3.x86_64.rpm
./RPMS/x86_64/frr-devel-9.1-01.oe2203sp3.x86_64.rpm
./RPMS/x86_64/frr-rpki-rtrlib-9.1-01.oe2203sp3.x86_64.rpm
./RPMS/x86_64/frr-9.1-01.oe2203sp3.x86_64.rpm
运行frr
yum install libssh-devel libssh protobuf-c net-snmp
yum install frr-snmp-9.1-01.oe2203sp3.x86_64.rpm \
frr-pythontools-9.1-01.oe2203sp3.x86_64.rpm frr-contrib-9.1-01.oe2203sp3.x86_64.rpm \
frr-devel-9.1-01.oe2203sp3.x86_64.rpm frr-rpki-rtrlib-9.1-01.oe2203sp3.x86_64.rpm \
frr-9.1-01.oe2203sp3.x86_64.rpm
vim /etc/frr/daemon
bgpd=yes
ospfd=yes
ospf6d=yes
ripd=no
ripngd=no
isisd=no
pimd=no
pim6d=no
ldpd=no
nhrpd=no
eigrpd=no
babeld=no
sharpd=no
pbrd=yes
bfdd=yes
fabricd=no
vrrpd=yes
pathd=no
systemctl restart frr
systemctl status frr