在Centos8中默认使用DNF没有使用YUM​

2023-06-26,,

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'命令将列出所有仓库中所有可用的软件包和已安装的软件包。然而像下面一样使用'list installed'选项将只列出已安装的软件包。

# dnf list installed

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

类似的,可以用'list available'选项列出所有开启的仓库中所有可用的软件包。

# dnf list available

7. 使用DNF查找软件包

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

# dnf search nano

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

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

# dnf provides /bin/bash

9. 使用DNF获得一个软件包的详细信息

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

# 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

# dnf upgrade

14. 使用DNF来移除/删除一个软件包

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

# dnf remove nano

# dnf erase nano

15. 使用DNF移除于依赖无用的软件包(Orphan Packages)

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

# dnf autoremove

16. 使用DNF移除缓存的软件包

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

# 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安装一个软件包组

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

# dnf groupinstall 'Educational Software'

22. 更新一个软件包组

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

# dnf groupupdate 'Educational Software'

23. 移除一个软件包组

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

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

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

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

Centos8默认使用DNF没有使用YUM​的相关教程结束。

《在Centos8中默认使用DNF没有使用YUM​.doc》

下载本文的Word格式文档,以方便收藏与打印。