目录
一、配置 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. 创建本地软件源仓库
步骤:
- 安装 createrepo 软件包
- 将所需要的软件包复制到一个目录下,如/mnt/local_repo
- 创建软件源
具体实操:
dnf install createrepo # 安装工具
软件包复制
createrepo 对应的软件包所在目录 # 生成元数据
5. 添加、启用和禁用软件源
-
添加仓库:
-
手动:在
/etc/yum.repos.d/
下新建.repo
文件 -
命令(需
dnf-plugins-core
插件):dnf config-manager --add-repo http://example.com/repo.repo #源地址
-
-
启用/禁用仓库:
-
启用:
dnf config-manager --set-enable <repo-id>
(例:
--enable epel
)
-
禁用:
dnf config-manager --set-disable <repo-id>
(例:
--disable epel
)
或直接编辑.repo
文件:修改enabled=1
或enabled=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 all | dnf list all |
查看可安装的包 | dnf list available | dnf 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 客户端访问流程: 安装工具 → 手动/自动挂载 → 验证访问