编译安装freeRadius和构建freeRadiusa包
编译安装freeRadius和构建freeRadiusa包
本篇主要是对于官方说明中的building FreeRedius中关于rehl和centos下的编译安装和构建包内容的翻译。
官方说明路径:https://wiki.freeradius.org/building/Home#building-from-source 和 https://wiki.freeradius.org/building/RHEL%20and%20Centos
1、building概述说明:
支持的平台:
freeradius可以运行在大多数的32位和64位平台上。
通常,平台之间的构建过程非常相似,主要的不同之处在于如何满足依赖关系和如何构建包
依赖:
libtalloc(since >= v3.0.x)
alloc是Samba项目使用/创建的分层内存分配器
它在版本大于等于v3.0.x的版本中大量使用,大大简化了内存分配和本地slab分配的复杂树的管理。
C11(since >= v4.0.x)
从v4.0.x(和现在不推荐使用的v3.1.x)开始,FreeRADIUS对C11支持有严格的依赖性(在GCC> = 4.9.0中可用)。
如果看到错误消息:
configure: error: FreeRADIUS requires support for the C11 _Generic keyword
这意味这你的编译器不支持c11,你需要一个支持c11的编译器完成编译。
对于clang,这意味着版本> = 3.0(2011年12月1日之后发布)和GCC版本> = 4.9(2014年4月2日之后发布)
libkqueue 或 native kqueue support (since >= v4.0.x)
kqueue是BSD(包括OSX)使用的事件接口。
在评估了不同操作系统和包装器(如libuv,libev,libevent [2]等)的本机事件API之后,FreeRADIUS核心团队决定对kqueue进行标准化。
对于Linux和Solaris用户,这意味着对填充库libkqueue有着严格的依赖性,该库包装了epoll(本机Linux事件API),并提供了与kqueue兼容的接口。
构建包:
freeradius 源码包含了多个不同类型的系统包的构建规则,如果你的操作系统有打包系统(dpkg,rpm,tgz),
通常,安装合适的软件包比直接从源代码安装更容易。
但是,这可能并不总是推荐的方法,因为许多系统似乎落后于FreeRADIUS的旧版本。在这种情况下,最好从源代码构建软件包
2、在rhel或centos上编译安装和构建:
依赖解决:
yum -y install libtalloc-devel
获取源码:
从官网获取freeRadius最新发布版:
https://freeradius.org/ftp/pub/freeradius/
freeradius-server-3.0.*.tar.gz
从git仓库获取最新的开发版本 (version 3.0.x)
git clone https://github.com/FreeRADIUS/freeradius-server.git
cd freeradius-server
git checkout v3.0.x
获取最新开发版本的zip压缩包 (version 3.0.x)
wget https://github.com/FreeRADIUS/freeradius-server/archive/v3.0.x.zip
unzip v3.0.x.zip
cd freeradius-server-3.0.x/
编译安装:
# Use ./configure --enable-developer if you're debugging issues, or using unstable code.
./configure
make
sudo make install
3、在rhel或centos上构建freeRadius软件包
Oracle支持:
如果你想要使用oracle,你需要在一个已安装oracle开发库的机器上重新编译FreeRadius
freeRadius既可以适用于完整的oracle安装也适用于oracle instant client SDK.
一旦构建了最终的RPM包,就可以只用Oracle Instant Client来部署(不需要在生产机器上使用SDK)
大多数rpm包可能没有包含oraclesql.conf 因为它们没有包含oracle驱动模块(由于版权限制)
如果你合理地拥有oracle头文件,构建一个最新的freeradius发布版tar包将是一个简单的事情,
将oracle头文件与tar包中的suse/或redhat/目录中的其他文件一起放到/usr/src/packages/SOURCES中,
freeradius.spec除外,freeradius应该放到/usr/src/package/SPECS中
然后修改/usr/src/packages/SPECS/freeradius.spec文件:
将:
%define _oracle_support 0
改为:
%define _oracle_support 1
升级GCC(仅>=v4.0.x 和master分支)
仅对于> = v4.0.x版本需要GCC升级,对于v3.0.x及更低版本,可以跳过此步骤。
RHE7随附GCC 4.8.5,但对于FreeRADIUS> = v4.0.x,我们要求GCC> = 4.9.0。
幸运的是,devtoolset-3系列软件包提供了更高版本的GCC。
按照此处的说明启用devtoolset-3存储库。
安装:
yum -y install devtoolset-3-gcc devtoolset-3-gcc-c++
然后进入具有正确环境的shell:
scl enable devtoolset-3 bash
或者可以在你的环境设置 CC=/opt/rh/devtoolset-3/root/usr/bin/gcc.
如果你在一个redhat的老版本上编译,你需要通过源码编译gcc
libkqueue
ibkqueue 需要版本>=v4.0.x,如果版本为v3.0.x或更低,可以跳过此步骤。
不幸的是rhel和centos都没有提供libkqueue的rpm包。以下说明将生成一个libkqueue的rpm包
可将其安装以从源代码进行构建,或者在构建软件包时与FreeRadius rpm一起分发。
构建libkqueue RPM 需要这些包:
yum -y install cmake3
最新版本的libkqueue可以从https://github.com/mheily/libkqueue/releases 找到
# Replace v2.3.1 with latest version
VERSION=2.3.1
wget https://github.com/mheily/libkqueue/archive/v{VERSION}.tar.gz
cd ./libkqueue-${VERSION}
cmake3 -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib .
make
cpack3 -G RPM
yum install *.rpm
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)