关于DNF


认识 DNF

DNF 是新一代的rpm软件包管理器;

DNF 的源文件路径: /etc/yum.repos.d/ ;

在 CentOS 8中,默认使用的软件管理工具由yum 换成了 速度更快的 dnf,原有的 yum 命令也成了 dnf 命令的 软链接;

[root@localhost yum.repos.d]# ll /usr/bin/yum 
lrwxrwxrwx. 1 root root 5 Apr 25  2020 /usr/bin/yum -> dnf-3

CentOS 8 的 DNF 源分为两个文件,分别是 CentOS-AppStream.repo 和 CentOS-Base.repo;

  • BaseOS 中的包旨在提供底层操作系统功能的核心集,为所有类型的安装提供基础。
  • 应用程序流中的包包括支持各种工作负载和用例的用户空间应用程序、语言运行库和数据库。

比如 httpd就被分类在AppStream里,Openssh分类在BaseOS内;

DNF 与 yum

1、DNF 性能优于 DNF

由于 Yum 中许多长期存在的问题仍未得到解决,因此 Yum 包管理器已被 DNF 包管理器取代。

这些问题包括性能差、内存占用过多、依赖解析速度变慢等。

DNF 使用 libsolv 进行依赖解析,由 SUSE 开发和维护,旨在提高性能。

2、DNF 有完整的 API 文档

3、DNF 支持各种扩展

4、dnf update 和 dnf upgrade 是等价的

5、代码行数 29000 vs 56000



CentOS 8.2 更换 DNF 源


拿到一台新服务器后,为了保证 下载软件的速度,通常会将服务器的包管理软件的源换为国内的源,常用的有 清华的源或者阿里的源,更换 DNF 源 和 更换 yum 源的操作是一样的,具体如下。

1、备份旧的源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2、下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
# 或者
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

3、运行 yum makecache 生成缓存

4、 通过 dnf repolist 查看软件源是否设置成功

5、问题: /etc/yum.repos.d 中的其他源需要修改么?

-rw-r--r--. 1 root root  731 Jun  3 09:02 CentOS-AppStream.repo
-rw-r--r--. 1 root root 2595 Nov 16 13:19 CentOS-Base.repo
-rw-r--r--. 1 root root  712 Jun  3 09:02 CentOS-Base.repo.backup
-rw-r--r--. 1 root root  798 Jun  3 09:02 CentOS-centosplus.repo
-rw-r--r--. 1 root root 1043 Jun  3 09:02 CentOS-CR.repo
-rw-r--r--. 1 root root  668 Jun  3 09:02 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  743 Jun  3 09:02 CentOS-Devel.repo
-rw-r--r--. 1 root root  756 Jun  3 09:02 CentOS-Extras.repo
-rw-r--r--. 1 root root  338 Jun  3 09:02 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  738 Jun  3 09:02 CentOS-HA.repo
-rw-r--r--. 1 root root  928 Jun  3 09:02 CentOS-Media.repo
-rw-r--r--. 1 root root  736 Jun  3 09:02 CentOS-PowerTools.repo
-rw-r--r--. 1 root root 1382 Jun  3 09:02 CentOS-Sources.repo
-rw-r--r--. 1 root root   74 Jun  3 09:02 CentOS-Vault.repo
-rw-r--r--. 1 root root 1167 Dec 19  2019 epel-modular.repo
-rw-r--r--. 1 root root 1249 Dec 19  2019 epel-playground.repo
-rw-r--r--. 1 root root 1104 Dec 19  2019 epel.repo
-rw-r--r--. 1 root root 1266 Dec 19  2019 epel-testing-modular.repo
-rw-r--r--. 1 root root 1203 Dec 19  2019 epel-testing.repo

DNF 命令

# 查看帮助
dnf help
# 查看手册
man dnf

# 查看 dnf 版本
dnf --versio

# 安装/删除/搜索/更新
dnf install/remove/search/update 

# 查询某软件详细信息。常用的命令
dnf info emacs

# 列出已装软件。常用的命令!一般在后面加上 | grep chrome 显示自己想找的软件
dnf list installed 

# 更新软件源缓存,这个命令其实不怎么需要自己手动输入,因为在用 update 或 install 时,系统会智能判断是否需要刷新缓存
dnf makecache

# 删除所有软件缓存,有时候更新出问题或者换软件源,可以把缓存清理一下,重新下载
dnf clean all

# 列出软件源,适合重新设置源后查看设置是否生效
dnf repolist
# 列出软件源(详细版)
dnf repolist all

# 有些软件源不想用了,可以在 /etc/yum.repo.d/ 目录删掉那个文件。
# 也可以使用以上命令禁用,也许以后还用的着呢? --set-enable 选项重新启用。
dnf config-manager --set-disable sublime-text 禁用某个软件源。

# dnf的历史记录。你用 dnf 做了那些操作?这里都有记录。
dnf history 

# 用户安装的历史记录。你用 dnf install 安装了哪些软件?这里有记录
dnf history userinstalled