27个‘DNF’(Yum的分支)命令用于Linux中的RPM包管理

DNF又称Dandified YUM是基于RPM的下一代软件包管理器。它首次出现在Fedora 18中,并在最近的Fedora 22版本中取代了YUM实用程序

DNF旨在改善YUM的瓶颈,如性能、内存使用、依赖解析、速度等诸多因素。DNF使用RPM、libsolv和hawkey库进行软件包管理。虽然它在CentOS和RHEL 7中并非预装,但您可以使用yum、dnf并与yum一起使用它。

您可以在这里了解更多关于DNF的信息:

  1. 用DNF替换Yum的原因

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系统管理员的赞扬,我认为。例如:

  1. --skip-broken在DNF中不被识别,也没有替代方法。
  2. 没有像‘resolvedep’命令,但您可以运行dnf provides。
  3. 没有‘deplist’命令来查找软件包依赖关系。
  4. 您排除一个仓库,意味着排除适用于所有操作,不像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/