Linux入门系统菜鸟

在Linux下DNF软件包管理工具中27个命令应用范例

DNF是基于RPM的分发版的下一代包管理器,它首次在Fedora 18中引入,在最近的版本中被替换为YUM实用程序

DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。

DNF又名Dandified YUM是基于RPM的分发下一代包管理器。 这是第一次了Fedora 18推出,它在最近发布Fedora 以及 REHL8/CENTOS8中已经取代了yum工具 。

dnf_banner_andyx.net_.jpg插图

DNF致力于改善YUM的瓶颈,即性能、内存占用、依赖解决、速度和许多其他方面。DNF使用RPM、libsolv和hawkey库进行包管理。尽管它并未预装在CentOS和RHEL 7中,但您可以通过yum安装,并同时使用二者。

  1. 用DNF替代Yum的原因

DNF最初发布于2015年5月11日 ,它(和DNF所有以前的版本)主要是用Python编写的,并基于GPL v2协议发布。

安装DNF

尽管Fedora 22官方已经过渡到了DNF,但DNF并不在RHEL7/CentOS 7的默认仓库中。(最新发布的REHL8/CENTOS8中默认已经将dnf替换为yum)

为了在RHEL7/CentOS7或者更早以前的版本系统中安装DNF,您需要首先安装和开启epel-release仓库。

# yum install epel-release
或者
# yum install epel-release -y

尽管并不建议在使用yum时添上’-y’选项,因为最好还是看看什么将安装在您的系统中。但如果您对此并不在意,则您可以使用’-y’选项以自动化的安装而无需用户干预。

接下来,使用yum命令从epel-realease仓库安装DNF包。

# yum install dnf

在您装完dnf后,我会向您展示27个实用的dnf命令和例子,以便帮您更容易和高效的管理基于RPM包的发行版。

1.检查DNF版本

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

# dnf --version

在Linux下DNF软件包管理工具中27个命令例子

2.列出启用的DNF存储库

dnf命令中的’repolist’选项将显示您系统中所有启用的仓库。

# dnf repolist

在Linux下DNF软件包管理工具中27个命令例子

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

‘repolist all’选项将显示您系统中所有启用/禁用的仓库。

# dnf repolist all

在Linux下DNF软件包管理工具中27个命令例子

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

‘dnf list’命令将列出所有仓库中所有可用的软件包和您Linux系统中已安装的软件包。

# dnf list

在Linux下DNF软件包管理工具中27个命令例子

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

尽管’dnf list’命令将列出所有仓库中所有可用的软件包和已安装的软件包。然而像下面一样使用’list installed’选项将只列出已安装的软件包。

# dnf list installed

在Linux下DNF软件包管理工具中27个命令例子

6.使用DNF列出所有可用软件包

同样,可以用’list available’选项列出所有开启的仓库中所有可用的软件包。

# dnf list available

在Linux下DNF软件包管理工具中27个命令例子

7.使用DNF搜索软件包

如果您不太清楚您想安装的软件包的名字,这种情况下,您可以使用’search’选项来搜索匹配该字符(例如,nano)和字符串的软件包。

# dnf search nano

在Linux下DNF软件包管理工具中27个命令例子

8.查看哪个软件包提供了某个文件/子软件包?

dnf的选项’provides’能查找提供了某个文件/子软件包的软件包名。例如,如果您想找找哪个软件包提供了您系统中的’/bin/bash’文件,可以使用下面的命令

# dnf provides /bin/bash

在Linux下DNF软件包管理工具中27个命令例子

9.使用DNF获取软件包的详细信息

如果您想在安装一个软件包前知道它的详细信息,您可以使用’info’来获得一个软件包的详细信息,例如:

# dnf info nano

在Linux下DNF软件包管理工具中27个命令例子

10.使用DNF安装软件包

想安装一个叫nano的软件包,只需运行下面的命令,它会为nano自动的解决和安装所有的依赖。

# dnf install nano

在Linux下DNF软件包管理工具中27个命令例子

11.使用DNF更新包

你可以只更新特定的包(比如systemd),并保留系统内剩余软件包不变。

# dnf update systemd

在Linux下DNF软件包管理工具中27个命令例子

12.使用DNF检查系统更新

检查安装到系统中的所有系统软件包的更新。

# dnf check-update

在Linux下DNF软件包管理工具中27个命令例子

13.使用DNF更新所有系统软件包

您可以使用以下命令更新整个系统,包括所有已安装的软件包。

# dnf update
OR
# dnf upgrade

在Linux下DNF软件包管理工具中27个命令例子

14.使用DNF删除/删除软件包

您可以在dnf命令中使用’remove’或’erase’选项来移除任何不想要的软件包。

# dnf remove nano
OR
# dnf erase nano

在Linux下DNF软件包管理工具中27个命令例子

15.使用DNF删除孤立包

这些为了满足依赖安装的软件包在相应的程序删除后便不再需要了。可以用过下面的命令来将它们删除。

# dnf autoremove

在Linux下DNF软件包管理工具中27个命令例子

16.使用DNF删除缓存包

我们在使用dnf时经常会碰到过期的头部信息和不完整的事务,它们会导致错误。我们可以使用下面的语句清理缓存的软件包和包含远程包信息的头部信息。

# dnf clean all

在Linux下DNF软件包管理工具中27个命令例子

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

您可能需要特定的DNF命令的帮助(例如,clean),可以通过下面的命令来得到:

# dnf help clean

在Linux下DNF软件包管理工具中27个命令例子

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

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

# dnf help

在Linux下DNF软件包管理工具中27个命令例子

19.查看DNF的历史

您可以调用’dnf history’来查看已经执行过的dnf命令的列表。这样您便可以知道什么被安装/移除及其时间戳。

# dnf history

在Linux下DNF软件包管理工具中27个命令例子

20.列出所有组包

‘dnf grouplist’命令可以显示所有可用的或已安装的软件包,如果没有什么输出,则它会列出所有已知的软件包组。

# dnf grouplist

在Linux下DNF软件包管理工具中27个命令例子

21.使用DNF安装组软件包

要安装一组由许多软件打包在一起的软件包组(例如,Educational Softaware),只需要执行:

# dnf groupinstall 'Educational Software'

在Linux下DNF软件包管理工具中27个命令例子

22.更新组包

可以通过下面的命令来更新一个软件包组(例如,Educational Software):

# dnf groupupdate 'Educational Software'

在Linux下DNF软件包管理工具中27个命令例子

23.删除组包

可以使用下面的命令来移除一个软件包组(例如,Educational Software):

# dnf groupremove 'Educational Software'

在Linux下DNF软件包管理工具中27个命令例子

24.从特定存储库安装软件包

DNF可以从任何特定的仓库(比如 epel)安装一个软件包(例如,phpmyadmin):

# dnf --enablerepo=epel install phpmyadmin

在Linux下DNF软件包管理工具中27个命令例子

25.将已安装的软件包同步到稳定版本

‘dnf distro-sync’将同步所有已安装的软件包到所有开启的仓库中最近的稳定版本。如果没有选择软件包,则会同步所有已安装的软件包。

# dnf distro-sync

在Linux下DNF软件包管理工具中27个命令例子

26.重新安装软件包

dnf reinstall nano’命令将重新安装一个已经安装的软件包(例如,nano):

# dnf reinstall nano

在Linux下DNF软件包管理工具中27个命令例子

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识别,并且DNF中没有其替代命令。
  • 尽管您可能会运行dnf provides,但再也没有’resolvedep’命令了。
  • 没有’deplist’命令用来发现软件包依赖。
  • 您排除一个仓库意味着在所有操作上排除该仓库,而在yum中,排除一个仓库只在安装和升级等时刻排除他们。

许多Linux用户对于Linux生态系统的走向不甚满意。首先Systemd替换了init系统v,现在DNF将于不久后替换YUM,首先是Fedora 22,接下来是RHEL8和CentOS。

您怎么看呢?是不是发行版和整个Linux生态系统并不注重用户并且在朝着与用户愿望相悖的方向前进呢?IT行业里有这样一句话 – “如果没有坏,为什么要修呢?”,System V和YUM都没有坏。

(END)

原文翻译自:https://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/