Linux部署DNF仓库及NFS共享服务

目录

一、配置 DNF

1. DNF配置文件

2. 配置 main 部分

3. 配置 repository 部分

4. 创建本地软件源仓库

5. 添加、启用和禁用软件源

二、管理软件包

1. 搜素软件包

2. 列出软件包清单

3. 显示RPM包

4.  下载软件包

5. 删除软件包

难点注释

三、管理软件包组

1. 列出软件包组清单

2. 显示软件包信息

3. 安装软件包组

4. 删除软件包组

四、检查并更新

五、NFS共享存储服务

1. 使用 NFS发布共享资源

2. 在客户机中访问NFS共享资源

六、总结速查

总结流程图


一、配置 DNF

1. DNF配置文件

1)主要的配置文件是:/etc/dnf/dnf.conf ,包含两个部分:

  • “main” 部分:保存着DNF的全局设置
  • “ repository ”部分:保存着软件源的设置,可以有零个或者多个它

2)软件源的配置方式(openEuler系统),有两种方式:

  • 直接配置" /etc/dnf/dnf.conf "里的“repository”部分
  • 在“ /etc/yum.repos.d ”目录下增加 .repo 文件

2. 配置 main 部分

[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove
=True
best=True
skip_if_unavailable=False
 

每一项含义:

  • - `[main]`:表示这是配置文件的主部分或主节。
  • - `gpgcheck=1`:启用 GPG 签名检查以确保软件包来源的安全性和真实性。
  • - `installonly_limit=3`:设置允许同时安装的同一软件包版本的数量限制为 3(例如,适用于内核版本)。
  • - `clean_requirements_on_remove=True`:在删除软件包时,自动清理不再需要的依赖关系。
  • - `best=True`:尝试安装最佳匹配版本的软件包(即尽可能满足依赖关系的最佳版本)。
  • - `skip_if_unavailable=False`:如果仓库不可用,则不会跳过相关操作,而是可能会导致错误或停止执行。

常用选项:

参数名称说明
cachedir缓存目录,存储RPM包和数据库文件
keepcache可选值1和0,表示是否要缓存已安装成功的那些RPM包及包头文件,为0就是不缓存
debuglevel设置dnf生成的debug信息。取值范围:0~10,越大越详细
obsoletes可选值1和0,设置是否允许更新陈旧的RPM包
plugins可选值1和0,表示启用或禁用dnf 插件

3. 配置 repository 部分

基本模板:

[仓库ID]
name=仓库名称
baseurl=仓库URL (支持 http/ftp/file 协议)
enabled=1              # 1=启用,0=禁用
gpgcheck=1               # 是否检查GPG签名
gpgkey=GPG密钥URL     # 例如:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS

注意:file:// 协议需使用绝对路径

高级参数

metalink=              # 动态镜像列表URL(优先于baseurl)
priority=N             # 优先级(数值越小优先级越高,默认99)
skip_if_unavailable=1      # 仓库不可用时是否跳过(避免报错中断)

显示当前配置:

dnf  config-manager  --dump      #显示当前的配置信息

dnf  repolist       #显示相应软件源的配置

dnf  config-manager  --dump  repository   #显示对应id的软件源配置

dnf  config-manager  --dump  glob_expression  #用全局正则表达式,显示所有匹配部分的配置

4. 创建本地软件源仓库

步骤:

  1. 安装  createrepo  软件包
  2. 将所需要的软件包复制到一个目录下,如/mnt/local_repo
  3. 创建软件源

具体实操:

dnf install createrepo  # 安装工具

软件包复制
createrepo 对应的软件包所在目录  # 生成元数据

5. 添加、启用和禁用软件源

  1. 添加仓库

    • 手动:在/etc/yum.repos.d/下新建.repo文件

    • 命令(需dnf-plugins-core插件):

      dnf config-manager --add-repo   http://example.com/repo.repo  #源地址
  2. 启用/禁用仓库

  • 启用:

dnf config-manager --set-enable <repo-id> 

(例:--enable epel

  • 禁用:

dnf config-manager --set-disable <repo-id>

(例:--disable epel

或直接编辑.repo文件:修改enabled=1enabled=0

二、管理软件包

1. 搜素软件包

场景命令示例/说明
按名称搜索dnf search <关键词>dnf search nginx(模糊匹配名称和摘要)
仅匹配名称dnf search -n <精确名称>dnf search -n "nginx*"(使用通配符搜索名称开头为 nginx 的包)
按文件/命令反查dnf provides <文件路径/命令>dnf provides /usr/bin/curl(查找提供 curl 命令的包)

2. 列出软件包清单

用途命令示例
列出所有已安装包的信息dnf list alldnf list all
查看可安装的包dnf list availablednf list available httpd
查看特定仓库的包dnf list --enablerepo=<repo-id>dnf list --enablerepo=epel
查看已启用的仓库包dnf repoquery -l <包名>dnf repoquery -l nginx(需安装 dnf-plugins-core

3. 显示RPM包

需求命令示例
查看包详细信息dnf info <包名>dnf info nginx(显示版本、仓库、依赖、大小等)
查看包文件列表dnf repoquery -l <包名>dnf repoquery -l nginx(未安装时需指定仓库)
查看依赖关系dnf repoquery --requires <包名>dnf repoquery --requires httpd(显示该包依赖的其他包)
查看被谁依赖dnf repoquery --whatrequires <包名>dnf repoquery --whatrequires openssl(查看依赖 openssl 的包)
  • 使用 repoquery 可替代 rpm -ql 查看未安装包的文件列表。

4.  下载软件包

场景命令示例/说明
安装RPM包dnf  install  <包名>dnf  install  httpd
仅下载不安装dnf download <包名>dnf download nginx(默认下载到当前目录)
指定下载目录dnf download -d <目录> <包名>dnf download -d /tmp nginx
下载所有依赖包dnf install --downloadonly <包名>dnf install --downloadonly nginx(下载到 /var/cache/dnf 目录)
下载并保留缓存确保 dnf.conf 中设置 keepcache=1下载后可在 /var/cache/dnf 中找到 .rpm 文件

5. 删除软件包

操作类型命令示例/说明
删除单个包dnf remove <包名>dnf remove httpd
批量删除包dnf remove <包1> <包2>dnf remove php mysql
删除无用依赖dnf autoremove自动清理未被其他包依赖的孤儿包
彻底删除(含配置)手动删除配置文件:rm -rf /etc/<包名>需谨慎操作!DNF 默认不删除配置文件

难点注释

  • --downloadonly 前置条件:需先安装 dnf-plugins-core 包。

  • autoremove 风险:可能误删仍需使用的依赖,建议先检查:dnf autoremove -n(模拟运行)。

  • 缓存位置:若修改过 dnf.conf 的 cachedir,下载路径会变化。

  • 强制删除:避免使用 rpm -e --nodeps(破坏依赖关系,可能导致系统不稳定)

三、管理软件包组

1. 列出软件包组清单

用途命令示例/说明
列出所有可用组dnf group list默认显示已安装、可用、环境组、id
仅显示已安装组dnf group list installed过滤已安装的软件包组
列出环境组dnf group list environments显示系统环境组(如最小安装、图形界面)
列出带隐藏项dnf group list --hidden显示隐藏的软件包组(默认不展示)
关键词搜索组dnf group list <关键词>dnf group list dev(匹配名称含 "dev" 的组,如开发工具组)

2. 显示软件包信息

操作命令示例/说明
查看组详细信息dnf group info "<组名>"dnf group info "Development Tools"(注意用引号包裹含空格的组名)
显示强制安装包输出中的 Mandatory Packages 部分组内必须安装的核心包
显示可选安装包输出中的 Optional Packages 部分需手动指定 --with-optional 才会安装的包
查看隐藏组信息dnf group info --hidden "<组名>"查看隐藏组的包列表

3. 安装软件包组

场景命令示例/说明
基本安装(仅强制包)dnf group install "<组名>"dnf group install "Web Server"
安装含可选包dnf group install --with-optional "<组名>"同时安装强制包和可选包
安装环境组dnf install @<环境组名>dnf install @graphical-server-environment(安装图形界面环境)
静默安装(跳过确认)添加 -y 参数dnf group install "DevTools" -y

4. 删除软件包组

操作类型命令示例/说明
移除组(保留软件包)dnf group remove "<组名>"仅删除组元数据,不卸载相关包
卸载组内所有包dnf group remove --remove-orphans "<组名>"卸载组内所有包(慎用!可能破坏依赖关系)
安全删除手动删除组标记:
dnf group remove "<组名>"
再清理无用包:dnf autoremove
推荐分步操作,避免误删关键依赖
删除环境组dnf remove @<环境组名>dnf remove @gnome-desktop(卸载 GNOME 桌面环境)

四、检查并更新

操作命令/步骤示例/说明
1. 检查更新dnf check-update无输出表示无更新
红色字体标记安全更新
dnf check-update <包名>dnf check-update kernel(检查内核更新)
2. 升级操作dnf update <包名>dnf update openssl(升级单个包)
dnf group update  升级软件包组 
3. 全面更新dnf update更新所有包和它们的依赖

五、NFS共享存储服务

1. 使用 NFS发布共享资源

步骤命令/配置示例/说明
安装服务dnf install nfs-utils
systemctl enable nfs
安装 NFS 工具并启动服务
配置共享目录编辑 /etc/exports 文件:
共享目录 客户端IP(选项)
示例配置
/opt/data 192.168.1.0/24(rw,sync)
/home *.example.com(ro)
启动nfs服务程序

systemctl start nfs-server

dnf  install  net-tools  -y

netstat  -anpt  |grep  rpc

启动和安装网络工具
查看本机发布的共享目录showmount  -e查看
生效配置(扩)exportfs -rav重新加载共享配置
防火墙放行(扩展)firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd}
firewall-cmd --reload
开放 NFS 相关服务

常用选项(表格)

选项作用
rw / ro读写 / 只读
sync / async同步写入(安全) / 异步写入(性能)
no_root_squash允许客户端 root 保留权限(⚠️高风险)
all_squash所有用户映射为匿名用户(通常搭配 anonuid/anongid 使用)

2. 在客户机中访问NFS共享资源

操作命令/配置示例/说明
安装工具dnf install -y nfs-utils rpcbind基础访问工具
启动

systemctl  enable  rpcbind

systemctl  start rpcbind

启动服务
手动挂载mount -t nfs <服务端IP>:<共享目录> <本地目录>mount -t nfs 192.168.1.100:/opt/data /mnt/nfs_data
永久挂载编辑 /etc/fstab
服务端IP:共享目录 本地目录 nfs defaults,_netdev 0 0
示例
192.168.1.100:/opt/data /mnt/nfs_data nfs defaults,_netdev 0 0
自动挂载配置 /etc/auto.master 和 /etc/auto.nfs示例配置
/mnt/nfs /etc/auto.nfs --timeout=30
data -fstype=nfs 192.168.1.100:/opt/data
强制删除umount  -lf   文件目录例子:umount   /var/www/html
验证挂载df -hT 或 mount -t nfs查看已挂载的 NFS 共享

六、总结速查

功能命令
列出所有仓库dnf repolist all
查看仓库详情dnf repoinfo 仓库ID
清除缓存dnf clean all

总结流程图

NFS 服务端配置流程:
安装服务 → 配置共享 → 生效配置 → 防火墙放行

NFS 客户端访问流程:
安装工具 → 手动/自动挂载 → 验证访问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值