在centos8上生成nfs-ganesha的相关rpm

1.背景

在某些情况下,可能需要在CentOS 8上从源代码生成NFS Ganesha的RPM包,特别是当内置的软件仓库提供的NFS Ganesha版本不能满足需求时,以及在类似系统上操作,打包ganesha的rpm。

2.依赖环境准备

2.1配置yum源

CentOS 8已于2021年12月31日寿终正非,但软件包仍在官方镜像上保留了一段时间。现在他们被转移到https://vault.centos.org,如果仍然需要运行的旧CentOS 8,可以在/etc/yum.repos中更新repos.d使用vault.centos.org代替mirror.centos.org。

sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

有一些源没有启用,需要启用,因为有的包不仅仅是在baseos、appstream、extras中的,不好分辨的情况下将除了本地源之外的都启用

sed -i 's#enabled=0#enabled=1#g' /etc/yum.repos.d/CentOS-Linux-PowerTools.repo
sed -i 's#enabled=0#enabled=1#g' /etc/yum.repos.d/CentOS-Linux-HighAvailability.repo
sed -i 's#enabled=0#enabled=1#g' /etc/yum.repos.d/CentOS-Linux-Plus.repo
sed -i 's#enabled=0#enabled=1#g' /etc/yum.repos.d/CentOS-Linux-FastTrack.repo
sed -i 's#enabled=0#enabled=1#g' /etc/yum.repos.d/CentOS-Linux-ContinuousRelease.repo

2.2安装依赖包

yum install python3-devel selinux-policy-devel libtirpc-devel userspace-rcu userspace-rcu-devel xfsprogs-devel
yum install cmake libarchive-devel bison flex doxygen libuuid-devel libblkid-devel libcap-devel libacl-devel
yum install libattr-devel libnfsidmap-devel libwbclient-devel libnsl2-devel
yum install gcc gcc-c++
yum install krb5-devel dbus-devel

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3拉取源代码

yum install -y git
git clone https://github.com/nfs-ganesha/nfs-ganesha.git

在这里插入图片描述
在这里插入图片描述

3编译打包

3.1生成makefile

切换到所需要的代码版本,然后拉取submodule

cd nfs-ganesha/
git checkout V4.2
git submodule update --init

在这里插入图片描述
创建一个新的构建目录并进入到这里运行cmake生成构建文件

mkdir build; cd build; cmake -DENABLE_VFS_POSIX_ACL=ON ../src
# 也可以指定其它某些选项,比如-DUSE_FSAL_CEPH=ON,按需设置即可

在这里插入图片描述
中间有个lsb-release缺失,虽然不报错 但还是最好装上
在这里插入图片描述
查看哪个包提供了这个程序
在这里插入图片描述
得到结果是redhat-lsb-core,安装这个即可(没装的装一下,截图时我已安装)
在这里插入图片描述

3.2生成rpm

yum install -y rpm-build

make rpm

在这里插入图片描述
执行make rpm没有报错后rpm生成,按需取用,若要与ceph结合,则相关ceph的编译选项需要打开。
在这里插入图片描述

3.3启用acl权限

默认打包的rpm都是无法使用acl的,也就是在服务端设置的acl权限,在客户端无法获取到
比如服务端:
在这里插入图片描述
客户端获取时无法获取到:
在这里插入图片描述

原因是打包rpm的spec文件中未设置ENABLE_VFS_POSIX_ACL=ON,而该选项默认值为OFF,导致客户端无法获取acl,致使acl权限验证有误。

解决办法:
修改源代码中生成rpm包的spec文件中的cmake选项,添加ENABLE_VFS_POSIX_ACL=ON
在这里插入图片描述
在这里插入图片描述
修改完了确保该参数值修改上
在这里插入图片描述

然后再重新cmake …/src,紧接着make rpm,确保make rpm过程中该变量的值为ON
在这里插入图片描述

然后得到rpm包重新安装后重启服务挂载nfs,acl权限可以正常获取
在这里插入图片描述

在这里插入图片描述

3.4 现成资源

已经打包好的rpm,不包含ceph,包含ENABLE_VFS_POSIX_ACL=ON的acl设置
在这里插入图片描述

下载地址:https://download.csdn.net/download/cf313995/89318658

备注:中间截图切换代码时4.2版本,打包的结果是4.4,是因为不是在一个时间段截的,用的时候已经是切换4.4版本,但没更新图,但整体过程是一致的。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值