主题
使用 dnf 管理软件包
在 Rocky Linux 中,软件包管理是系统管理的重要组成部分。本文将详细介绍如何使用 dnf(Dandified YUM)包管理器来管理系统中的软件包,包括安装、更新、删除软件包以及管理软件仓库等操作。
什么是 dnf?
dnf 是 Rocky Linux(以及其他 RHEL 系列发行版)中默认的包管理器,它是 yum(Yellowdog Updater Modified)的继任者。dnf 提供了更快的性能、更好的依赖解析能力和更多的功能,同时保持了与 yum 兼容的命令行接口。
dnf 的基本操作
1. 安装软件包
bash
# 安装单个软件包
sudo dnf install package_name
# 安装多个软件包
sudo dnf install package1 package2 package3
# 安装特定版本的软件包
sudo dnf install package_name-version
# 自动回答 yes
sudo dnf install -y package_name2. 更新软件包
bash
# 更新单个软件包
sudo dnf update package_name
# 更新所有软件包
sudo dnf update
# 检查可更新的软件包(不执行更新)
dnf check-update3. 删除软件包
bash
# 删除软件包,但保留配置文件
sudo dnf remove package_name
# 删除软件包及其依赖(谨慎使用)
sudo dnf autoremove package_name
# 删除软件包及其配置文件
sudo dnf erase package_name # 与 remove 效果相同4. 搜索软件包
bash
# 搜索软件包
dnf search keyword
# 搜索提供特定功能的软件包
dnf provides feature_name
# 搜索文件属于哪个软件包
dnf provides /path/to/file5. 查看软件包信息
bash
# 查看软件包详情
dnf info package_name
# 列出已安装的所有软件包
dnf list installed
# 列出所有可用的软件包
dnf list available
# 列出所有软件包(已安装和可用)
dnf list all6. 管理软件包组
bash
# 列出所有软件包组
dnf group list
# 安装软件包组
sudo dnf group install "Group Name"
# 移除软件包组
sudo dnf group remove "Group Name"
# 查看软件包组详情
dnf group info "Group Name"软件仓库管理
1. 查看已启用的仓库
bash
# 列出所有已启用的仓库
dnf repolist
# 列出所有仓库(包括禁用的)
dnf repolist all2. 启用和禁用仓库
bash
# 启用仓库
sudo dnf config-manager --set-enabled repository_name
# 禁用仓库
sudo dnf config-manager --set-disabled repository_name3. 添加新仓库
bash
# 添加仓库(通过 URL)
sudo dnf config-manager --add-repo repository_url
# 添加 EPEL 仓库示例
sudo dnf install epel-release -y4. 清理缓存
bash
# 清理所有缓存
sudo dnf clean all
# 重建缓存
sudo dnf makecachednf 的高级功能
1. 软件包历史
bash
# 查看软件包事务历史
dnf history
# 查看特定事务的详细信息
dnf history info transaction_id
# 撤销特定事务
sudo dnf history undo transaction_id
# 重做特定事务
sudo dnf history redo transaction_id2. 模块管理(在 Rocky Linux 8+ 中)
bash
# 列出所有可用模块
dnf module list
# 查看模块详情
dnf module info module_name
# 启用模块
sudo dnf module enable module_name:stream
# 安装模块
sudo dnf module install module_name:stream/profile
# 禁用模块
sudo dnf module disable module_name3. 依赖关系管理
bash
# 查看软件包的依赖
dnf repoquery --requires package_name
# 查看哪些软件包依赖于特定软件包
dnf repoquery --whatrequires package_name
# 查看软件包提供的功能
dnf repoquery --provides package_name4. 下载软件包而不安装
bash
# 下载软件包到当前目录
sudo dnf download package_name
# 下载软件包及其依赖
sudo dnf download --resolve package_name常见的软件仓库
在 Rocky Linux 中,以下是一些常用的软件仓库:
官方仓库
- BaseOS:提供核心操作系统组件
- AppStream:提供应用程序流、运行时和数据库等
- PowerTools:提供构建依赖项和开发工具
第三方仓库
- EPEL (Extra Packages for Enterprise Linux):提供额外的企业级软件包
- RPM Fusion:提供开源和非开源软件
- ELRepo:提供硬件相关的软件包,如内核驱动程序
配置 dnf
dnf 配置文件
主要配置文件位于 /etc/dnf/dnf.conf,您可以根据需要修改此文件:
bash
sudo vim /etc/dnf/dnf.conf常用配置选项:
ini
[main]
cachedir=/var/cache/dnf
keepcache=1 # 保留缓存,设为 0 则自动清除
debuglevel=2
logfile=/var/log/dnf.log
exactarch=1
obsoletes=1
gpgcheck=1 # 检查 GPG 签名
enabled=1
installonly_limit=3 # 保留的内核版本数量
best=True
skip_if_unavailable=False
deltarpm=0 # 如果带宽有限,可以启用增量 RPM
timeout=300 # 超时时间(秒)
metadata_expire=6h # 元数据过期时间
defaultyes=True # 默认回答 yes仓库配置文件
每个仓库都有自己的配置文件,位于 /etc/yum.repos.d/ 目录:
bash
ls -l /etc/yum.repos.d/dnf 插件
dnf 支持插件扩展功能,常用的插件包括:
安装插件
bash
# 安装 dnf 插件
sudo dnf install dnf-plugins-core -y常用插件
- fastestmirror:自动选择最快的镜像
- changelog:显示软件包更新日志
- download:下载软件包而不安装
- needs-restarting:检查哪些服务需要重启
使用插件示例
bash
# 检查需要重启的服务
sudo needs-restarting -r
# 查看软件包更新日志
dnf changelog package_name实用的 dnf 命令组合
1. 系统维护命令
bash
# 全面更新系统
sudo dnf update -y
# 删除不需要的依赖
sudo dnf autoremove
# 清理缓存
sudo dnf clean all
# 重建缓存
sudo dnf makecache2. 查找和安装特定功能的软件包
bash
# 查找并安装 Web 服务器
dnf search web server
sudo dnf install httpd -y
# 查找并安装开发工具
dnf group list | grep Development
sudo dnf group install "Development Tools" -y3. 解决依赖问题
bash
# 检查冲突
sudo dnf check
# 强制安装特定版本
sudo dnf install package_name-version --allowerasing常见问题与解决方案
1. 无法找到软件包
- 问题:
No match for argument: package_name - 解决方案:
- 检查软件包名称是否正确
- 启用包含该软件包的仓库
- 运行
sudo dnf makecache刷新缓存
2. 依赖冲突
- 问题:
Error: Transaction check error - 解决方案:
- 使用
--allowerasing选项允许替换冲突的软件包 - 尝试安装特定版本的软件包
- 检查是否有第三方仓库导致冲突
- 使用
3. GPG 签名验证失败
- 问题:
GPG key retrieval failed或Public key for package.rpm is not installed - 解决方案:
- 导入缺失的 GPG 密钥
- 临时禁用 GPG 检查(不推荐,仅作为临时解决方案):
sudo dnf install package_name --nogpgcheck
4. 网络问题
- 问题:无法连接到仓库
- 解决方案:
- 检查网络连接
- 尝试使用不同的镜像
- 修改
timeout设置
总结
dnf 是 Rocky Linux 中强大而灵活的包管理工具,通过本文介绍的命令和技巧,您应该能够有效地管理系统中的软件包。从基本的安装、更新和删除操作,到更高级的仓库管理和依赖解析,dnf 提供了全面的功能来满足您的软件管理需求。
定期使用 dnf 来更新您的系统,安装必要的软件包,以及管理您的软件仓库,这将帮助您保持系统的安全性和功能性。