编译安装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/vVERSION.tar.gz    tarxvzfv{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

posted @   虾米没有肚  阅读(962)  评论(0编辑  收藏  举报
编辑推荐:
· 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)
点击右上角即可分享
微信分享提示