网站搜索

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


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

成功安装dnf后,是时候向您展示27dnf命令的实际用法,并通过示例帮助您管理基于RPM的发行版中的软件包轻松有效。

1.检查DNF版本

检查您系统上安装的 DNF 版本。

dnf --version

2.列出已启用的DNF存储库

dnf 命令的选项“repolist”将显示您系统下所有启用的存储库。

dnf repolist

3.列出所有启用和禁用的DNF存储库

选项“repolist all”将打印系统下所有启用/禁用的存储库。

dnf repolist all

4.使用DNF列出所有可用和已安装的软件包

命令“dnf list”将列出所有存储库中的所有可用软件包以及 Linux 系统上已安装的软件包。

dnf list

5.使用DNF列出所有已安装的软件包

而“dnf list”命令显示所有存储库中的所有可用/已安装的软件包。但是,您可以选择使用选项“列出已安装”仅列出已安装的软件包,如下所示。

dnf list installed

6.使用DNF列出所有可用的包

同样,“列出可用”选项将列出所有已启用的存储库中可安装的所有软件包。

dnf list available

7.使用DNF搜索包

如果您不知道要安装的软件包,在这种情况下,您可以使用 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),您可以使用 dnf 命令的“remove”或“erase”开关来删除它。

dnf remove nano
OR
dnf erase nano

15.使用DNF删除孤立包

如果其他应用程序不使用那些为了满足依赖性而安装的软件包,则它们可能毫无用处。要删除这些孤立包,请执行以下命令。

dnf autoremove

16.使用DNF删除缓存包

很多时候我们会遇到过时的标头和未完成的事务,这会导致执行 dnf 时出错。我们只需执行即可清除所有缓存的包和包含远程包信息的标头。

dnf clean all

17.获取特定DNF命令的帮助

您只需执行以下命令即可获得任何特定 dnf 命令的帮助(例如 clean)。

dnf help clean

18.列出所有DNF命令和选项

要列出所有可用 dnf 命令和选项的帮助,只需键入。

dnf help

19.查看DNF历史

您可以调用dnf历史记录来查看已执行的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. 降级软件包

如果可能,选项“降级”会将指定的包(例如 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 并没有按照预期降级软件包。它也被报告为错误。

结论

DNF 是最先进的包管理器 YUM 的上层状态。我相信,它往往会自动执行大量处理,这不会受到许多经验丰富的 Linux 系统管理员的赞扬。举个例子:

  1. --skip-broken 不被 DNF 识别,没有其他选择。
  2. 没有什么像“resolvedep”这样的命令,但是你可以运行 dnf 提供的命令。
  3. 没有“deplist”命令来查找包依赖项。
  4. 您排除某个存储库,意味着排除适用于所有操作,这与 yum 不同,yum 仅在安装和更新等时排除这些存储库。

一些 Linux 用户对 Linux 生态系统的发展方式并不满意。首先 Systemd 删除了 init system v,现在 DNF 将很快在 Fedora 22 中取代 YUM,稍后在 RHEL 和 CentOS 中取代 YUM。

你怎么认为?都是发行版,整个 Linux 生态系统并没有重视其用户,并且违背了他们的意愿。 IT 行业也常说——“如果没有损坏,为什么要修复?”,init System V 和 YUM 都没有损坏。

目前为止就这样了。请在下面的评论中告诉我您的宝贵想法。喜欢并分享我们并帮助我们传播。