网站首页 波兰世界杯 世界杯球星排名 直播吧世界杯
首页 >> 直播吧世界杯
DNF 包管理基础

DNF 包管理基础

适用于 CentOS Stream 9 & 10 / AlmaLinux 9.x & 10.x / Rocky Linux 9.x & 10.x DNF (Dandified YUM) 是 EL 9 系列的默认包管理器,取代了 EL 7 时代的 YUM。本文带你掌握日...

适用于 CentOS Stream 9 & 10 / AlmaLinux 9.x & 10.x / Rocky Linux 9.x & 10.x

DNF (Dandified YUM) 是 EL 9 系列的默认包管理器,取代了 EL 7 时代的 YUM。本文带你掌握日常使用中最常见的 DNF 操作。

你将学到Section titled “你将学到”

搜索、安装、更新和删除软件包

查看已安装的包和包信息

管理软件包缓存

理解 DNF 与 YUM 的关系

前置条件Section titled “前置条件”

一台已安装 EL 9.x 的系统(物理机或虚拟机均可)

拥有 sudo 权限的用户账户

系统已联网

基础操作Section titled “基础操作”

搜索软件包Section titled “搜索软件包”

使用 dnf search 在仓库中查找软件包:

搜索包含 nginx 的软件包$ dnf search nginx

输出示例:

Last metadata expiration check: 2:15:30 ago on Mon 24 Mar 2026.======================== Name Exactly Matched: nginx ========================nginx.x86_64 : A high performance web server and reverse proxy server==================== Name & Summary Matched: nginx ====================nginx-mod-http-perl.x86_64 : Nginx HTTP perl modulenginx-mod-stream.x86_64 : Nginx stream modules

提示

使用 dnf search --all <关键词> 可以搜索包名和描述中的匹配项。

安装软件包Section titled “安装软件包”

查看包信息(可选但推荐)

查看 nginx 包的详细信息$ dnf info nginx

安装软件包

安装 nginx$ sudo dnf install nginx

DNF 会显示将要安装的包和依赖列表,输入 y 确认。

验证安装

确认 nginx 已安装$ rpm -q nginxnginx-1.24.0-1.el9.x86_64

注意

加 -y 参数可以跳过确认提示:sudo dnf install -y nginx。适合脚本使用,交互操作时建议保留确认步骤。

更新软件包Section titled “更新软件包”

更新单个软件包$ sudo dnf update nginx

更新所有已安装的软件包$ sudo dnf update

仅检查可用更新,不安装$ dnf check-update

删除软件包Section titled “删除软件包”

删除 nginx$ sudo dnf remove nginx

警告

dnf remove 会同时删除依赖于被删除包的其他包。请仔细阅读确认列表后再输入 y。

查看已安装的包Section titled “查看已安装的包”

列出所有已安装的包$ dnf list installed

列出已安装的包(过滤关键词)$ dnf list installed | grep nginx

查看某个文件属于哪个包$ dnf provides /usr/sbin/nginx

管理缓存Section titled “管理缓存”

清除所有缓存$ sudo dnf clean all

重建元数据缓存$ sudo dnf makecache

DNF 与 YUM 的关系Section titled “DNF 与 YUM 的关系”

在 EL 9 上,yum 命令实际是 dnf 的软链接:

验证 yum 指向 dnf$ ls -la /usr/bin/yumlrwxrwxrwx 1 root root 5 Jan 1 00:00 /usr/bin/yum -> dnf-3

你可以继续使用 yum 命令,效果与 dnf 完全一致。但建议新用户直接习惯使用 dnf。

常见问题Section titled “常见问题”

提示 “No match for argument: xxx”Section titled “提示 “No match for argument: xxx””

包名可能不在已启用的仓库中。尝试:

Terminal window$ dnf search xxx # 确认包名是否正确$ dnf repolist # 查看已启用的仓库

如果包在 EPEL 中,请参考 EPEL 与第三方源。

提示 “This command has to be run with superuser privileges”Section titled “提示 “This command has to be run with superuser privileges””

你需要使用 sudo 或切换到 root 用户。参考sudo 配置。

EL 10 注意事项:DNF 4.20 的变化Section titled “EL 10 注意事项:DNF 4.20 的变化”

EL 10 仍然使用 DNF 4(当前为 4.20),而不是 DNF 5;dnf 日常命令与 EL 9 基本兼容。主要变化如下:

变化项EL 9EL 10包管理器DNF 4DNF 4.20(命令保持兼容)模块化(AppStream)提供模块流已弃用:不再分发 modular 内容,dnf module 会显示弃用警告filelists 元数据默认下载默认不下载(节省磁盘空间和时间)DNF debug 插件可用已从 dnf-plugins-core 移除versionlockpython3-dnf-plugin-versionlock相同(包名仍是 python3-dnf-plugin-versionlock),仍使用 versionlock.list

确认当前 DNF 版本dnf --version

警告

EL 10 不再分发 modular 内容。dnf module 命令仍然存在,但会输出弃用警告,且没有可用的模块流。EL 9 中通过 dnf module enable php:8.1 选择版本的做法,在 EL 10 上改为直接安装带版本号的包(如 dnf install php)。升级前请检查自动化脚本中的 dnf module 命令。

注意

如果某次查询或安装因缺少 filelists 元数据而失败,可以临时加上 --setopt=optional_metadata_types=filelists,或在 /etc/dnf/dnf.conf 中设置 optional_metadata_types=filelists。

延伸阅读Section titled “延伸阅读”

仓库管理 — 添加、启用、禁用软件仓库

EPEL 与第三方源 — 获取更多软件包

RPM 基础 — 底层包管理工具

DNF 官方文档:man dnf