在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.youkuaiyun.com/download/cf313995/89318658
备注:中间截图切换代码时4.2版本,打包的结果是4.4,是因为不是在一个时间段截的,用的时候已经是切换4.4版本,但没更新图,但整体过程是一致的。