DNF又称Dandified YUM是基于RPM的下一代软件包管理器。它首次出现在Fedora 18中,并在最近的Fedora 22版本中取代了YUM实用程序。
DNF旨在改善YUM的瓶颈,如性能、内存使用、依赖解析、速度等诸多因素。DNF使用RPM、libsolv和hawkey库进行软件包管理。虽然它在CentOS和RHEL 7中并非预装,但您可以使用yum、dnf并与yum一起使用它。
您可以在这里了解更多关于DNF的信息:
DNF的最新稳定版本是1.0(在发布此帖子时),发布于2015年5月11日。它(以及所有以前的DNF版本)主要由Python编写,并在GPL v2许可下发布。
安装DNF
DNF在RHEL/CentOS 7的默认软件源中不可用。但是,Fedora 22正式实现了DNF。
要在RHEL/CentOS系统上安装DNF,首先需要安装并启用epel-release存储库。
# yum install epel-release OR # yum install epel-release -y
尽管使用yum时使用‘-y’不道德,因为建议查看系统中正在安装的内容。但是如果这对您不是很重要,您可以使用‘-y’与yum自动安装所有内容,无需用户干预。
接下来,使用yum命令从epel-release存储库安装DNF软件包。
# yum install dnf
安装成功后,是时候向您展示27个实用的dnf命令用法及示例,这将帮助您轻松有效地管理RPM基础发行版的软件包。
1. 检查DNF版本
检查系统上安装的DNF版本。
# dnf --version
2. 列出已启用的DNF存储库
使用dnf命令的‘repolist’选项,将显示系统下所有已启用的存储库。
# dnf repolist
3. 列出所有已启用和已禁用的DNF存储库
选项‘repolist all’将打印系统下所有已启用/已禁用的存储库。
# dnf repolist all
4. 使用DNF列出所有可用和已安装的软件包
命令“dnf list”将列出所有可用软件包和系统上已安装的软件包。
# dnf list
5. 使用DNF列出所有已安装的软件包
“dnf list” 命令显示所有可用/已安装的软件包来自所有存储库。但是,您可以选择仅列出已安装的软件包,使用选项“list installed” 如下所示。
# dnf list installed
6. 使用 DNF 列出所有可用软件包
同样,“list available” 选项,将列出所有可从所有启用的存储库安装的软件包。
# dnf list available
7. 使用 DNF 搜索软件包
如果您不知道要安装的软件包,可以使用 ‘search‘ 选项与 dnf 命令搜索与单词或字符串匹配的软件包(比如 nano)。
# dnf search nano
8. 查看提供文件/子软件包的内容?
dnf 选项 “provides” 查找提供特定文件/子软件包的软件包名称。例如,如果您想找到系统上提供 ‘/bin/bash‘ 的软件包是什么?
# dnf provides /bin/bash
9. 使用 DNF 获取软件包的详细信息
假设您想在安装软件包之前了解软件包的信息,您可以使用 “info” 开关获取有关软件包的详细信息(比如 nano)如下。
# dnf info nano
10. 使用 DNF 安装软件包
要安装一个名为 nano 的软件包,只需运行下面的命令,它将自动解析并安装软件包 nano 的所有必需依赖项。
# dnf install nano
11. 使用 DNF 更新软件包
您可以仅更新特定软件包(比如 systemd),而保持系统中的其他内容不变。
# dnf update systemd
12. 使用 DNF 检查系统更新
只需简单地检查系统中所有已安装软件包的更新。
# dnf check-update
13. 使用 DNF 更新所有系统软件包
您可以使用以下命令更新整个系统,包括所有已安装的软件包。
# dnf update OR # dnf upgrade
14. 使用 DNF 移除/擦除软件包
要移除或擦除任何不需要的软件包(比如 nano),您可以使用“remove”或“erase”开关与 dnf 命令一起使用来移除它。
# dnf remove nano OR # dnf erase nano
15. 使用 DNF 移除孤立软件包
那些仅用于满足依赖关系的软件包,如果没有被其他应用程序使用,可能是无用的。要移除这些孤立软件包,请执行以下命令。
# dnf autoremove
16. 使用 DNF 移除缓存软件包
A lot of time we encounter out-of-date headers and unfinished transactions which results into error while executing dnf. We may clean all the cached packages and headers containing remote package information simply by executing.
# dnf clean all
17. 获取特定 DNF 命令的帮助
您可以通过执行以下命令获取任何特定 dnf 命令的帮助(比如 clean)。
# dnf help clean
18. 列出所有 DNF 命令和选项
要列出所有可用 dnf 命令和选项的帮助,请简单输入。
# dnf help
19. 查看 DNF 历史记录
您可以调用 dnf history 查看已执行的 dnf 命令列表。这样您就可以了解随时间戳安装/移除了什么。
# dnf history
20. 列出所有组软件包
命令“dnf grouplist”将打印所有可用或已安装的软件包,如果未提及任何内容,它将列出所有已知的组。
# dnf grouplist
21. 使用DNF安装组软件包
要安装一组打包在一起的软件包(比如教育软件),只需简单地执行以下命令。
# dnf groupinstall 'Educational Software'
22. 更新组软件包
让我们通过执行以下命令来更新一个组软件包(比如教育软件)。
# dnf groupupdate 'Educational Software'
23. 删除组软件包
我们可以删除组软件包(比如教育软件)如下。
# dnf groupremove 'Educational Software'
24. 从特定仓库安装软件包
DNF使得可以从仓库(epel)中安装任何特定软件包(比如phpmyadmin)变得简单。
# dnf --enablerepo=epel install phpmyadmin
25. 将已安装的软件包同步到稳定版本
命令“dnf distro-sync”将提供必要的选项,将所有已安装的软件包同步到任何已启用仓库中最新的稳定版本。如果未选择任何软件包,则将同步所有已安装的软件包。
# dnf distro-sync
26. 重新安装软件包
命令“dnf reinstall nano”将重新安装一个已安装的软件包(比如nano)。
# dnf reinstall nano
27. 降级软件包
选项“downgrade”将降级指定软件包(比如acpid)到可能的较低版本。
# dnf downgrade acpid
示例输出
Using metadata from Wed May 20 12:44:59 2015 No match for available package: acpid-2.0.19-5.el7.x86_64 Error: Nothing to do.
我的观察: DNF没有像应该的那样降级包。这也被报告为bug。
结论
DNF是最先进的软件包管理器YUM的上一级状态。它倾向于自动执行许多处理,这不会得到许多经验丰富的Linux系统管理员的赞扬,我认为。例如:
--skip-broken
在DNF中不被识别,也没有替代方法。- 没有像‘resolvedep’命令,但您可以运行dnf provides。
- 没有‘deplist’命令来查找软件包依赖关系。
- 您排除一个仓库,意味着排除适用于所有操作,不像yum只在安装和更新等操作时排除那些仓库。
一些Linux用户对Linux生态系统的发展方式不满意。首先是Systemd移除了init系统v,现在DNF将更快地在Fedora 22中取代YUM,然后在RHEL和CentOS中取代YUM。
你认为呢?发行版和整个Linux生态系统是否没有重视用户并违背了他们的意愿。在IT行业经常说:“如果没坏,为什么修复?”,既不是init System V坏了,也不是YUM坏了。
暂时就这些。请在下方评论中告诉我您宝贵的想法。点赞并分享我们,帮助我们传播。
Source:
https://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/