Linux DNF 仓库部署与 NFS 共享服务配置
1. DNF仓库
DNF(Dandified YUM)是YUM的升级版本,用于RPM包的安装、更新、卸载及依赖管理。DNF仓库是存放RPM软件包及元数据(repodata目录,记录包信息与依赖关系)的存储位置,分为本地仓库(本地磁盘、NFS共享)和网络仓库(官方源、第三方源),本文聚焦本地仓库搭建与共享。
2. NFS共享服务
NFS(Network File System)是Linux/Unix系统间的网络文件共享协议,可将服务端本地目录通过网络共享给客户端,客户端可将该目录挂载为本地路径使用,实现文件跨主机复用,本文用于共享已搭建的DNF仓库。
核心说明
一、服务端操作(核心:搭建 DNF 仓库 + 配置 NFS 共享)
1. 环境基础准备
bash
运行
# 安装必备工具:createrepo(仓库元数据)、nfs-utils/rpcbind(NFS服务)
dnf install -y createrepo nfs-utils rpcbind
# 关闭防火墙/SELinux(测试环境);生产环境见文末优化
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
2. 搭建本地 DNF 仓库(ISO 镜像版,高效离线)
bash
运行
# 1. 创建目录:ISO挂载目录+仓库根目录
mkdir -p /mnt/iso /data/dnf-repo
# 2. 挂载系统ISO镜像(替换为实际ISO文件路径)
mount -o loop /root/CentOS-8-x86_64-dvd.iso /mnt/iso
# 3. 复制ISO内所有包及元数据到仓库目录(避免ISO卸载失效)
cp -r /mnt/iso/* /data/dnf-repo/
# 4. 生成/更新仓库元数据(ISO自带可跳过,自定义包必须执行)
createrepo /data/dnf-repo/
3. 配置并启动 NFS 共享服务
bash
运行
# 1. 配置NFS共享规则:共享仓库目录,允许指定网段访问(替换为实际局域网网段)
echo "/data/dnf-repo 192.168.1.0/24(rw,sync,no_root_squash)" > /etc/exports
# 2. 启动服务并设置开机自启(rpcbind为NFS依赖,需先启动)
systemctl start rpcbind nfs-server && systemctl enable rpcbind nfs-server
# 3. 重载NFS配置,使共享规则立即生效
exportfs -rv
# 4. 验证共享:输出仓库目录即配置成功
showmount -e localhost
二、客户端操作(核心:挂载 NFS 目录 + 配置 DNF 源)
1. 安装 NFS 客户端工具
bash
运行
# 安装客户端工具,仅需启动rpcbind(无需启动nfs-server)
dnf install -y nfs-utils rpcbind
systemctl start rpcbind && systemctl enable rpcbind
# 关闭防火墙/SELinux(测试环境)
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
2. 挂载服务端 NFS 共享目录
bash
运行
# 1. 创建本地挂载目录
mkdir -p /mnt/nfs-dnf
# 2. 临时挂载(替换为服务端实际固定IP)
mount -t nfs 192.168.1.100:/data/dnf-repo /mnt/nfs-dnf
# 3. 永久挂载(写入fstab,重启自动生效)
echo "192.168.1.100:/data/dnf-repo /mnt/nfs-dnf nfs defaults 0 0" >> /etc/fstab
# 4. 验证挂载:显示挂载信息即成功
df -h /mnt/nfs-dnf
3. 配置 DNF 源指向 NFS 挂载目录
bash
运行
# 1. 备份原有官方源,避免冲突
mkdir -p /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
# 2. 新建DNF源配置文件,指向NFS挂载目录
cat > /etc/yum.repos.d/nfs-dnf.repo << EOF
[nfs-dnf]
name=NFS Shared DNF Repo
baseurl=file:///mnt/nfs-dnf
enabled=1
gpgcheck=0
EOF
# 3. 清理原有缓存,生成新缓存使配置生效
dnf clean all && dnf makecache
# 4. 验证仓库:显示仓库信息即可用
dnf repolist
三、生产环境关键优化(必配)
测试环境可直接关闭防火墙 / SELinux,生产环境需保留并做如下配置,仅在服务端执行:
bash
运行
# 1. 防火墙放行NFS相关服务,永久生效
firewall-cmd –add-service={nfs,rpc-bind,mountd} –permanent && firewall-cmd –reload
# 2. SELinux授权,允许NFS共享及仓库访问
setsebool -P nfs_export_all_rw 1
chcon -Rt public_content_t /data/dnf-repo/
# 3. NFS共享改为只读,防止客户端篡改仓库文件
sed -i 's/rw/ro/' /etc/exports && exportfs -rv
四、快速验证与排错
服务端验证
bash
运行
showmount -e localhost # 验证NFS共享是否生效
dnf repolist # 验证自身DNF仓库是否可用
systemctl status nfs-server # 查看NFS服务状态
客户端验证
bash
运行
showmount -e 服务端IP # 验证能否访问服务端NFS共享
df -h /mnt/nfs-dnf # 验证NFS挂载状态
dnf repolist # 验证DNF仓库是否启用
dnf install -y net-tools # 安装测试包,验证仓库可用性
mount -a # 测试fstab永久挂载配置是否正确


