海南省网站建设_网站建设公司_响应式网站_seo优化
2026/1/16 19:28:50 网站建设 项目流程

一、命令结构概览

基本语法

dnf [选项] <子命令> [参数]

二、核心子命令详解

1. 安装相关命令

install- 安装软件包
sudo dnf install package_name sudo dnf install package1 package2 package3 # 多个包 sudo dnf install package-1.0-1.el8.x86_64 # 指定版本 sudo dnf install @group_name # 安装组 sudo dnf install --allowerasing package # 允许删除冲突包

选项:

  • -y, --assumeyes:自动回答 yes

  • --nogpgcheck:跳过 GPG 签名检查

  • --skip-broken:跳过有依赖问题的包

  • --best:尝试安装最佳可用版本

  • --setopt=option=value:临时设置配置选项

reinstall- 重新安装
sudo dnf reinstall package_name sudo dnf reinstall package* # 使用通配符

2. 更新相关命令

update- 更新软件包
sudo dnf update # 更新所有包 sudo dnf update package_name # 更新指定包 sudo dnf update --security # 仅安全更新 sudo dnf update-minimal # 最小化更新 sudo dnf update --bugfix # 仅错误修复更新 sudo dnf update --enhancement # 仅功能增强更新
upgrade- 升级系统
sudo dnf upgrade # 升级所有包(类似 update) sudo dnf upgrade --refresh # 刷新元数据后升级 sudo dnf system-upgrade # 发行版升级(Fedora)

3. 移除相关命令

remove- 移除软件包
sudo dnf remove package_name sudo dnf remove package1 package2 sudo dnf remove --oldinstallonly # 移除旧的内核包
erase- 删除软件包(与 remove 同义)
sudo dnf erase package_name
autoremove- 自动移除
sudo dnf autoremove # 移除不需要的依赖 sudo dnf autoremove --dry-run # 模拟运行

4. 查询与搜索命令

search- 搜索软件包
dnf search keyword # 在包名和摘要中搜索 dnf search all keyword # 在所有字段搜索 dnf search --showduplicates keyword # 显示所有版本 dnf search -C keyword # 使用缓存搜索
list- 列出软件包
dnf list installed # 已安装的包 dnf list available # 可用的包 dnf list updates # 可更新的包 dnf list recent # 最近添加的包 dnf list extras # 外部安装的包 dnf list obsoletes # 已废弃的包 dnf list --showduplicates package # 显示所有版本
info- 显示包信息
dnf info package_name dnf info --available package # 仅显示可用包信息 dnf info --installed package # 仅显示已安装包信息
provides/whatprovides- 查找文件所属包
dnf provides /usr/bin/vim dnf provides "*/vim" dnf provides "MIME::Entity" # 查找 Perl 模块
repoquery- 仓库查询(强大工具)
dnf repoquery -l package # 列出包文件 dnf repoquery --requires package # 列出依赖 dnf repoquery --whatrequires package # 列出反向依赖 dnf repoquery --changelog package # 显示变更日志 dnf repoquery --srpm package # 查询源码包 dnf repoquery --duplicates # 列出重复包

5. 仓库管理命令

repolist- 列出仓库
dnf repolist # 启用的仓库 dnf repolist all # 所有仓库 dnf repolist enabled # 启用的仓库 dnf repolist disabled # 禁用的仓库 dnf repolist -v # 详细信息
repomanager- 仓库管理
dnf config-manager --add-repo URL # 添加仓库 dnf config-manager --enable repo_id # 启用仓库 dnf config-manager --disable repo_id # 禁用仓库 dnf config-manager --save # 保存设置
makecache- 创建缓存
sudo dnf makecache # 刷新所有缓存 sudo dnf makecache --timer # 定时刷新 sudo dnf makecache fast # 快速刷新

6. 依赖与验证命令

deplist- 依赖列表
dnf deplist package_name # 列出包依赖 dnf deplist --arch x86_64 package # 指定架构
check- 检查问题
sudo dnf check # 检查包数据库 sudo dnf check --dependencies # 检查依赖
verify- 验证包
sudo dnf verify package # 验证包完整性 sudo dnf verify all # 验证所有包

7. 历史与回滚命令

history- 操作历史
dnf history # 列出历史 dnf history list # 列出历史(同上) dnf history info 5 # 查看第5次操作详情 dnf history summary # 摘要信息 dnf history stats # 统计信息
历史操作
sudo dnf history undo 5 # 撤销第5次操作 sudo dnf history redo 5 # 重做第5次操作 sudo dnf history rollback 5 # 回滚到第5次操作前

8. 组管理命令

group- 软件组管理
dnf group list # 列出组 dnf group list hidden # 包括隐藏组 dnf group info "Development Tools" # 组信息 sudo dnf group install "Development Tools" sudo dnf group remove "Development Tools" sudo dnf group upgrade "Development Tools"

9. 环境管理命令

environment- 环境管理(RHEL/CentOS)
dnf environment list # 列出环境 dnf environment info "Minimal Install" sudo dnf group install environment "Minimal Install"

10. 模块管理命令(RHEL8+/CentOS8+)

module- 模块管理
dnf module list # 列出模块 dnf module info module_name # 模块信息 sudo dnf module enable module:stream # 启用模块流 sudo dnf module install module:stream/profile sudo dnf module remove module sudo dnf module reset module # 重置模块

11. 清理命令

clean- 清理缓存
sudo dnf clean all # 清理所有缓存 sudo dnf clean packages # 清理包缓存 sudo dnf clean metadata # 清理元数据 sudo dnf clean dbcache # 清理数据库缓存 sudo dnf clean expire-cache # 清理过期缓存

三、高级选项详解

1. 输出控制选项

dnf -q install package # 安静模式 dnf -v install package # 详细模式 dnf -d 5 install package # 调试级别5 dnf -e 0 install package # 错误级别0 dnf --setopt=tsflags=noscripts # 不运行脚本

2. 安装选项

dnf install --downloadonly package # 仅下载不安装 dnf install --downloaddir=/path # 指定下载目录 dnf install --exclude=package # 排除特定包 dnf install --obsoletes # 允许废弃包

3. 更新选项

dnf update --security --bugfix # 安全和错误修复 dnf update --advisory=ADVISORY_ID # 特定公告 dnf update --cve=CVE-2023-XXXXX # 特定CVE

4. 配置选项

dnf --config=/path/to/config.conf # 指定配置文件 dnf --installroot=/mnt/sysroot # 指定安装根目录 dnf --releasever=8 # 指定发行版版本

四、实用命令组合示例

1. 安全更新检查

# 检查安全更新但不安装 sudo dnf updateinfo list updates security sudo dnf updateinfo info security sudo dnf updateinfo list cves

2. 包比较

# 比较两个版本 dnf repoquery --changelog package | head -50 rpmdev-vercmp package-version1 package-version2

3. 批量操作

# 批量安装包(从文件读取) sudo dnf install $(cat packages.txt) # 批量删除 sudo dnf remove $(dnf repoquery --installed --qf "%{name}" | grep pattern)

4. 回滚特定包

# 查看包版本历史 rpm -q --changelog package_name | head -20 # 降级到特定版本 sudo dnf downgrade package-version

五、配置文件详解

主配置文件:/etc/dnf/dnf.conf

[main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True best=False skip_if_unavailable=True retries=3 timeout=30 max_parallel_downloads=10 # 插件设置 plugins=1 pluginpath=/usr/lib/dnf/plugins # 仓库设置 cachedir=/var/cache/dnf keepcache=False

仓库配置:/etc/yum.repos.d/*.repo

[baseos] name=Fedora $releasever - BaseOS baseurl=https://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch metadata_expire=86400

六、性能优化技巧

1. 并行下载设置

# 临时设置 sudo dnf --setopt=max_parallel_downloads=20 install package # 永久设置 echo "max_parallel_downloads=20" >> /etc/dnf/dnf.conf

2. 使用本地镜像

# 生成镜像列表 sudo dnf install dnf-plugin-fastestmirror # 或手动指定镜像 sudo dnf --setopt=baseurl=http://local-mirror/path install

3. 缓存优化

# 保持包缓存 echo "keepcache=True" >> /etc/dnf/dnf.conf # 定期清理 sudo dnf clean expire-cache

七、故障排除命令

1. 依赖问题解决

# 强制解决依赖 sudo dnf --allowerasing install package # 跳过特定依赖 sudo dnf --skip-broken install package # 重建依赖数据库 sudo rpm --rebuilddb sudo dnf makecache

2. 锁定包版本

# 锁定包防止更新 sudo dnf versionlock add package sudo dnf versionlock list sudo dnf versionlock delete package

3. 检查冲突

# 检查包冲突 sudo dnf check # 验证包完整性 sudo rpm -Va # 查看问题详情 sudo dnf deplist problem_package

八、脚本编写示例

1. 自动化安装脚本

#!/bin/bash set -e # 更新系统 sudo dnf update -y # 安装基础包 sudo dnf install -y @base @development-tools # 安装特定软件 packages="vim git wget curl net-tools" sudo dnf install -y $packages # 清理缓存 sudo dnf clean all

2. 监控更新脚本

#!/bin/bash # 检查可用更新 updates=$(dnf check-update --quiet | wc -l) if [ $updates -gt 0 ]; then echo "有 $updates 个可用更新" dnf check-update --security else echo "系统已是最新" fi

九、注意事项

  1. 谨慎使用-y选项:生产环境中建议手动确认

  2. 备份重要数据:重要操作前建议备份

  3. 理解依赖关系:避免随意删除包

  4. 定期清理:防止缓存占用过多空间

  5. 验证源可靠性:只使用可信的仓库源

十、获取帮助

man dnf # 手册页 dnf --help # 简要帮助 dnf <command> --help # 子命令帮助 dnf help history # 特定子命令帮助 dnf shell # 进入交互式shell

这个详解涵盖了 dnf 的主要功能和高级用法,适用于从初学者到系统管理员的各个级别用户。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询