去github下载最新代码加压缩,进入到主目录:
进去我就找configure文件,找了半天没找到,百度搜素才发现,需要先执行 bootstrap.sh 真丢人。
1、bootstrap.sh
2、./configure CC=gcc
FRR依赖很多库
json-c
libelf(编译 clippy的时候需要,这个可以再编译frr之前,先编译)github 上有些源码不对,要找包含gelf.h头文件的那个目录
libyang(依赖cmake 、pcre2)
libgRpc库,需要下载submodule的代码(Third_party下很多需要下载的库,否则会编译不过)
git clone https://github.com/grpc/grpc.git
cd grpc
git submodule update --init
官网上有非常详细的编译步骤甚至是编译依赖库的介绍;
Cross-Compiling — FRR latest documentation
FRR的配置安装
安装完相关库后:执行configure
./configure --prefix=/usr --includedir=\${prefix}/include --bindir=\${prefix}/bin --sbindir=\${prefix}/lib/frr --libdir=\${prefix}/lib/frr --libexecdir=\${prefix}/lib/frr --localstatedir=/var/run/frr --sysconfdir=/etc/frr --with-moduledir=\${prefix}/lib/frr/modules --with-libyang-pluginsdir=\${prefix}/lib/frr/libyang_plugins --enable-configfile-mask=0640 --enable-logfile-mask=0640 --enable-snmp=agentx --enable-multipath=64 --enable-user=frr --enable-group=frr --enable-vty-group=frrvty --with-pkg-git-version --with-pkg-extra-version=-MyOwnFRRVersion
配置执行结果:
config.status: executing libtool commands
configure: WARNING: unrecognized options: --with-libyang-pluginsdir
FRRouting configuration
------------------------------
FRR version : 8.2.2-MyOwnFRRVersion
host operating system : linux-gnu
source code location : .
compiler : gcc -std=gnu11
compiler flags : -g -O2 -fno-omit-frame-pointer -funwind-tables -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wundef -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -pthread
make : make
linker flags : -ljson-c -lrt -lcap -lreadline -lm
state file directory : /var/run/frr
config file directory : /etc/frr
module directory : /usr/lib/frr/modules
script directory : /etc/frr/scripts
user to run as : frr
group to run as : frr
group for vty sockets : frrvty
config file mask : 0640
log file mask : 0640
zebra protobuf enabled : no
vici socket path : /var/run/charon.vici
The above user and group must have read/write access to the state file
directory and to the config files in the config file directory.
root@xxxx-xxxxxxxw:~/code/frr-frr-8.2.2#
执行 make和make install
make
make install
根据官网的步骤安装配置文件
sudo install -m 775 -o frr -g frr -d /var/log/frr
sudo install -m 775 -o frr -g frrvty -d /etc/frr
sudo install -m 640 -o frr -g frrvty tools/etc/frr/vtysh.conf /etc/frr/vtysh.conf
sudo install -m 640 -o frr -g frr tools/etc/frr/frr.conf /etc/frr/frr.conf
sudo install -m 640 -o frr -g frr tools/etc/frr/daemons.conf /etc/frr/daemons.conf
sudo install -m 640 -o frr -g frr tools/etc/frr/daemons /etc/frr/daemons
sudo install -p -m 644 redhat/frr.service /usr/lib/systemd/system/frr.service
sudo install -p -m 755 redhat/frr.init /usr/lib/frr/frr
install -p -m 644 tools/frr.service /usr/lib/systemd/system/frr.service
第一条就报错
root@xxxxxxjllll:~/code/frr-frr-8.2.2# install -m 775 -o frr -g frr -d /var/log/frr
install: invalid user ‘frr’
原来是在编译前需要先添加 用户组
添加FRR用户和组
groupadd -r -g 92 frr
groupadd -r -g 85 frrvty
adduser --system --ingroup frr --home /var/run/frr/ \
--gecos "FRR suite" --shell /sbin/nologin frr
usermod -a -G frrvty frr
sudo adduser --system --ingroup frr --home /var/run/frr/ --gecos "FRR suite" --shell /sbin/nologin frr