DNF 和 YUM 均是 rpm 软件包管理工具,但是 DFN 替代 YUM 的说法由来已久,因为 YUM 包管理工具有一些问题长期得不到解决。

这些问题包括性能低下、内存占用高以及依赖包解决方案不佳等。

而 DNF 在依赖包解决方案中采用了由 SUSE 开发的”libsolv”库,用以提升依赖包解析性能。

YUM 是一个管理 RPM 软件依赖包和软件库的前端工具,可以下载 RPM 软件包并安装,最后删除下载的软件包。

至于为什么要开发一个新的工具来替代 YUM,而不是解决 YUM 现有的问题,其原因在于想要解决 YUM 现有的问题技术上存在很多问题,并且 YUM 团队也不能很快适应更新带来的改变。

另外,更重要的原因是 YUM 的源代码有大概56000行,修改起来工作量巨大。

序号 DNF (Dandified YUM) YUM (Yellowdog Updater, Modified)
1 DNF依赖解决方案采用用由 SUSE 开发的高性能 libsolv 库 YUM依赖解决方案为公共 API
2 API 接口文档完备 API 接口文档较完备
3 由 C C++ 和 Python 编写 由 Python 编写
4 DNF 目前应用在 Fedora、RHEL 8、CentOS 8、OEL 8和 Mageia 6/7 YUM 目前应用在 RHEL 6/7、CentOS 6/7 和 OEL 6/7
5 DNF 支持各类扩展 YUM 支持 Python 扩展
6 接口文档完备,开发新功能容易 接口文档不完备,开发新功能困难
7 同步软件库元数据时内存消耗低 同步软件库元数据消耗大量内存
8 如果软件包更新过程中存在不相关的依赖包,则软件包不更新 软件包更新时不进行依赖包相关性检查
9 如果允许的软件库没响应,则 DNF 会忽略并继续使用可用软件库 如果允许软件库没响应,则 YUM 程序会立即中止
10 DNF 中 update 和 upgrade 相同 YUM 中 update 和 upgrade 不同
11 程序包的依赖包是不会更新的 YUM 提供选项来设置这种行为
13 DNF 允许删除所有内核文件,包括正在使用的内核 YUM 禁止删除正在使用的内核
14 如果软件包更新过程中存在不相关的依赖包,则软件包不更新 软件包更新时不进行依赖包相关性检查

centos8平台使用dnf/yum管理软件包

 

一,dnf的用途

centos7开始,DNF 成为了默认的软件包管理器,同时 yum 仍然是可用的

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

DNF使维护软件包组变得容易,并且能够自动解决依赖性问题

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,dnf所属的包

1,dnf所属的包

[root@blog zshfile]# whereis dnf
dnf: /usr/bin/dnf /etc/dnf /usr/share/man/man8/dnf.8.gz [root@blog zshfile]# rpm -qf /usr/bin/dnf
dnf-4.2.7-7.el8_1.noarch

2,yum所属的包:

[root@blog zshfile]# whereis yum
yum: /usr/bin/yum /etc/yum /etc/yum.conf /usr/share/man/man8/yum.8.gz [root@blog zshfile]# ll /usr/bin/yum
lrwxrwxrwx 1 root root 5 Dec 19 23:43 /usr/bin/yum -> dnf-3

可见yum是一个符号链接,链接到了dnf-3

[root@blog zshfile]# whereis dnf-3
dnf-3: /usr/bin/dnf-3 [root@blog zshfile]# rpm -qf /usr/bin/dnf-3
python3-dnf-4.2.7-7.el8_1.noarch

三,查看dnf的版本和帮助

1,查看版本

[root@blog zshfile]# dnf --version
4.2.7
Installed: dnf-0:4.2.7-7.el8_1.noarch at Thu 05 Mar 2020 02:18:51 AM GMT
Built : CentOS Buildsys <bugs@centos.org> at Thu 19 Dec 2019 03:44:23 PM GMT Installed: rpm-0:4.14.2-11.el8_0.x86_64 at Wed 25 Dec 2019 03:36:22 AM GMT
Built : CentOS Buildsys <bugs@centos.org> at Tue 01 Oct 2019 01:45:29 PM GMT

2,查看帮助

[root@blog zshfile]# dnf --help

3,查看手册

[root@blog zshfile]# man dnf

四,dnf操作例子:对repo的查询

1,列出系统上的存储库,状态是enabled

[root@blog ~]# dnf repolist

说明:这个命令等价于 dnf repolist enabled

2,列出所有的存储库:(包括enabled/disabled)

[root@blog ~]# dnf repolist all

3,列出未安装到系统的repo(状态是disabled)

[root@blog ~]# dnf repolist disabled

4,查看某个repo的详细信息

[root@blog ~]# dnf repolist  -v BaseOS

说明:也可以用repoinfo

[root@blog ~]# dnf repoinfo BaseOS 

五,dnf操作例子:对软件包的查询、搜索

1,列出所有软件包:

(包括可安装的和已安装的)

[root@blog ~]# dnf list 

说明:显示分成两部分:

Installed Packages     已安装的包

Available Packages     可安装的包

注意 repo前加了@符的,表示是已安装的

2,列出已安装的软件包

[root@blog ~]# dnf list installed  

3,列出所有可安装的软件包:

[root@blog ~]# dnf list available 

4,查看包的详细信息

# info:查看rpm包的详细信息

[root@blog ~]# dnf info zsh
Last metadata expiration check: 0:14:50 ago on Sun 12 Apr 2020 07:27:24 PM CST.
Installed Packages
Name : zsh
Version : 5.5.1
Release : 6.el8
Architecture : x86_64
Size : 6.9 M
Source : zsh-5.5.1-6.el8.src.rpm
Repository : @System
Summary : Powerful interactive shell
URL : http://zsh.sourceforge.net/
License : MIT
Description : The zsh shell is a command interpreter usable as an interactive login
: shell and as a shell script command processor. Zsh resembles the ksh
: shell (the Korn shell), but includes many enhancements. Zsh supports
: command line editing, built-in spelling correction, programmable
: command completion, shell functions (with autoloading), a history
: mechanism, and more. Available Packages
Name : zsh
Version : 5.5.1
Release : 6.el8_1.2
Architecture : x86_64
Size : 2.9 M
Source : zsh-5.5.1-6.el8_1.2.src.rpm
Repository : BaseOS
Summary : Powerful interactive shell
URL : http://zsh.sourceforge.net/
License : MIT
Description : The zsh shell is a command interpreter usable as an interactive login
: shell and as a shell script command processor. Zsh resembles the ksh
: shell (the Korn shell), but includes many enhancements. Zsh supports
: command line editing, built-in spelling correction, programmable
: command completion, shell functions (with autoloading), a history
: mechanism, and more.

分别列出了已安装和可获得的两个rpm包的信息

5,搜索rpm包

[root@blog ~]# dnf search zsh
Last metadata expiration check: 0:14:10 ago on Sun 12 Apr 2020 07:27:24 PM CST.
====================================== Name Exactly Matched: zsh =========================================
zsh.x86_64 : Powerful interactive shell
========================================= Name & Summary Matched: zsh =====================================
zsh-html.noarch : Zsh shell manual in html format
zsh-syntax-highlighting.noarch : Fish shell like syntax highlighting for Zsh
=================================================== Name Matched: zsh ======================================
cekit-zsh-completion.noarch : Container image creation tool

6,查询指定的文件属于哪个软件包?

#provides:查看是哪个软件包提供了系统中的某一文件

[root@blog ~]# dnf provides /usr/bin/zsh
Last metadata expiration check: 0:48:19 ago on Sun 12 Apr 2020 07:27:24 PM CST.
zsh-5.5.1-6.el8.x86_64 : Powerful interactive shell
Repo : @System
Matched from:
Filename : /usr/bin/zsh

7,列出指定仓库拥有的软件包

[root@centos8 yum.repos.d]# dnf list --repo epel

六,dnf操作例子:对包的安装

1,安装

[root@blog ~]# dnf install zsh

2,从指定的repo安装一个rpm包

[root@blog ~]# dnf --enablerepo=BaseOS install zsh 

3,仅下载,不安装

[root@blog ~]# dnf download nginx

下载完成后,可以在当前目录找到下载的rpm包

七,  dnf操作例子:对包的删除

1,删除指定的软件包

#remove:   删除指定的rpm包

[root@blog ~]# yum remove zsh

2,删除缓存的无用软件包

[root@blog ~]# dnf clean all
41 files removed

八,dnf操作例子:对包的更新

1,更新指定的软件包:

[root@blog ~]# dnf update zsh

2,更新所有的软件包:

[root@blog ~]# dnf update 

也可以用upgrade

[root@blog ~]# dnf upgrade

3,检查可以更新的软件包

[root@blog ~]# dnf check-update

九,dnf操作例子:其他操作:

1,查看 DNF 命令的执行历史

[root@blog ~]# dnf history 

2,查看某个指定命令的帮助

#help: 查看指定命令的帮助

[root@blog yum.repos.d]$ dnf help list 

3,把软件包的元数据列表缓存到本地:

[root@centos8 yum.repos.d]# dnf makecache

十,如何编辑dnf的repo?

1,例子:修改dnf的repo使用国内源

Appstream库:

[root@centos8 yum.repos.d]# vi CentOS-AppStream.repo

修改baseurl一行为:

baseurl=https://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/

Base库:

[root@centos8 yum.repos.d]# vi CentOS-Base.repo 

修改baseurl一行为:

baseurl=https://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/

Extras库:

[root@centos8 yum.repos.d]# vi CentOS-Extras.repo

修改baseurl一行为:

baseurl=https://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os/

以上修改完成后:

[root@centos8 yum.repos.d]# dnf clean all
51 文件已删除

更新缓存

[root@centos8 yum.repos.d]# dnf makecache
CentOS-8 - AppStream 3.8 MB/s | 6.6 MB 00:01
CentOS-8 - Base 2.8 MB/s | 5.0 MB 00:01
CentOS-8 - Extras 15 kB/s | 4.9 kB 00:00
Official OpenResty Open Source Repository for RHEL 158 kB/s | 38 kB 00:00

元数据缓存已建立。

查看BaseOS这个repo的信息

[root@centos8 yum.repos.d]# dnf repoinfo BaseOS
上次元数据过期检查:0:01:54 前,执行于 2020年04月13日 星期一 13时53分29秒。 仓库ID : BaseOS
仓库名 : CentOS-8 - Base
仓库状态 : 启用
仓库版本: 1585863557
仓库更新: 2020年04月03日 星期五 05时39分17秒
仓库包 : 2,126
仓库大小 : 1.9 G
仓库基本地址: https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/
仓库到期: 172,800 秒 (最近 2020年04月13日 星期一 13时53分27秒)
仓库文件名: /etc/yum.repos.d/CentOS-Base.repo

执行一次安装,测试效果

[root@centos8 yum.repos.d]# yum install tmux

2,修改epel源也使用阿里云

安装epel源:

[root@centos8 yum.repos.d]# yum install epel-release

把源配置为阿里云

[root@centos8 yum.repos.d]# vi epel.repo 

把epel段的baseurl一项修改为:

baseurl=http://mirrors.aliyun.com/epel/8/Everything/$basearch

并注释掉:metalink一项

[root@centos8 yum.repos.d]# dnf clean all
22 文件已删除
[root@centos8 yum.repos.d]# dnf makecache
CentOS-8 - AppStream 2.4 MB/s | 6.6 MB 00:02
CentOS-8 - Base 2.7 MB/s | 5.0 MB 00:01
CentOS-8 - Extras 18 kB/s | 4.9 kB 00:00
Extra Packages for Enterprise Linux 8 - x86_64 5.1 MB/s | 6.2 MB 00:01
Official OpenResty Open Source Repository for RHEL 162 kB/s | 38 kB 00:00
元数据缓存已建立。
[root@centos8 yum.repos.d]# dnf repolist
上次元数据过期检查:0:00:09 前,执行于 2020年04月13日 星期一 14时07分30秒。
仓库标识 仓库名称 状态
AppStream CentOS-8 - AppStream 5,124
BaseOS CentOS-8 - Base 2,126
epel Extra Packages for Enterprise Linux 8 - x86_64 5,240
extras CentOS-8 - Extras 12
openresty Official OpenResty Open Source Repository for RHEL 83
[root@centos8 yum.repos.d]# dnf repoinfo epel
上次元数据过期检查:0:00:20 前,执行于 2020年04月13日 星期一 14时07分30秒。 仓库ID : epel
仓库名 : Extra Packages for Enterprise Linux 8 - x86_64
仓库状态 : 启用
仓库版本: 1586537550
仓库更新: 2020年04月11日 星期六 00时53分18秒
仓库包 : 5,240
仓库大小 : 6.5 G
仓库基本地址: http://mirrors.aliyun.com/epel/8/Everything/x86_64
仓库到期: 172,800 秒 (最近 2020年04月13日 星期一 14时07分26秒)
仓库文件名: /etc/yum.repos.d/epel.repo

测试epel源是否可用?

[root@centos8 yum.repos.d]# dnf install nethogs

十一,查看centos的版本

[root@centos8 yum.repos.d]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)

在CentOS 8上使用DNF管理软件包

0.4662020.01.03 21:03:29字数 379阅读 8,252

DNF代表Dandified YUM是基于RPM的Linux发行版的软件包管理器。它用于在Fedora / RHEL / CentOS操作系统中安装,更新和删除软件包。 它是Fedora 22,CentOS8和RHEL8的默认软件包管理器。 DNF是YUM的下一代版本,并打算在基于RPM的系统中替代YUM。 DNF功能强大且具有健壮的特征。DNF使维护软件包组变得容易,并且能够自动解决依赖性问题。

已安装包的列表

dnf list installed

或者

dnf list available

查找与安装软件包

dnf search httpd

安装httpd包命令:

dnf install httpd

重装httpd:

dnf reinstall httpd

某些情况下,你需要下载软件包而不是安装它。你用下列命令下载指定包:

dnf download httpd

你能用命令查看http包的详细信息:

dnf info httpd

更新系统包

首先,用以下命令你能检测你系统上的所有系统包的更新

dnf check-update

更新系统中的所有安装包

dnf update

更新特定的软件包:

dnf update httpd

列出安装组包(Group packages)

dnf grouplist

现在,安装特定的组包:

dnf groupinstall 'System Tools'

你也能用下列命令更新组包:

dnf groupupdate 'System Tools'

列表库(List Repositories)

列出所有库文件:

dnf repolist all

现在,用下面的命令仅列出系统上的存储库

dnf repolist

卸载包(Remove packages)

卸载不要的http包:

dnf remove httpd

去除安装httpd不要的依赖包

dnf autoremove

使用以下命令清除所有缓存的软件包:

dnf clean all

列出系统上的存储库,状态是enabled [root@blog ~]# dnf repolist的更多相关文章

  1. MySQL Yum存储库 安装、升级、集群

    添加MySQL Yum存储库 首先,将MySQL Yum存储库添加到系统的存储库列表中.按着这些次序: 在http://dev.mysql.com/downloads/repo/yum/上转到MySQ ...

  2. 使用MySQL Yum存储库的快速指南【mysql官方文档】

    使用MySQL Yum存储库的快速指南 抽象 MySQL Yum存储库提供用于在Linux平台上安装MySQL服务器,客户端和其他组件的RPM包.这些软件包还可以升级和替换从Linux发行版本机软件存 ...

  3. 每秒高达1.6亿次操作的并发键值存储库 FASTER 诞生

    FASTER 在过去十年中,云中的数据密集型应用程序和服务有了巨大的增长.数据在各种边设施(例如,设备,浏览器和服务器)上创建,并由云应用程序处理用来获得数据价值或做出决策.应用程序和服务可以处理收集 ...

  4. Maven - Repository(存储库)

    版权所有,未经授权,禁止转载 章节 Maven – 简介 Maven – 工作原理 Maven – Repository(存储库) Maven – pom.xml 文件 Maven – 依赖管理 Ma ...

  5. Linux配置自建 YUM 软件存储库

    yum软件仓库的搭建方式有三种,分别是本地yum源,网络yum源,第三方软件仓库. 以下示例演示了搭建本地yum仓库的方法: 1. 删除 /etc/yum.repos.d/dvd.repo 这个仓库文 ...

  6. git-secret:在 Git 存储库中加密和存储密钥(上)

    当涉及处理机密信息(如密码.令牌.密钥文件等)等,以下问题值得考虑: 安全性十分重要,但高安全性往往伴随着高度的不便. 在团队中,共享某些密钥有时无法避免(因此现在我们需要考虑在多人之间分发和更新密钥 ...

  7. Windows 系统上用 .NET/C# 查找所有窗口,并获得窗口的标题、位置、尺寸、最小化、可见性等各种状态

    原文:Windows 系统上用 .NET/C# 查找所有窗口,并获得窗口的标题.位置.尺寸.最小化.可见性等各种状态 在 Windows 应用开发中,如果需要操作其他的窗口,那么可以使用 EnumWi ...

  8. 介绍两种在RHEL 和 CentOS 系统上检查或列出已安装的安全更新的方法

    在本文中,我们将向你展示如何检查已安装的安全更新.我会介绍两种方法,你可以选择最适合你的. 此外,我还添加了一个小的 shell 脚本,它为你提供已安装的安全包计数. 运行以下命令获取系统上已安装的安 ...

  9. Centos系统各种日志存详解

    Centos系统各种日志存储路径和详细介绍 Linux常见的日志文件详述如下 1./var/log/boot.log(自检过程) 2./var/log/cron (crontab守护进程crond所派 ...

随机推荐

  1. 使用 Github Actions artifact 在 workflow job 之间共享数据

    (AgileConfig)[https://github.com/kklldog/AgileConfig] 在使用 react 编写UI后,变成了一个彻彻底底的前后端分离的项目,上一次解决了把reac ...

  2. 配置redis 4.0.11 集群

    配置redis 4.0.11 集群 准备redis 软件和redis配置文件 启动Redis服务 /data/soft/redis/src/redis-check-aof --fix /log/red ...

  3. helm3.1安装及结合ceph rbd 部署harbor

    [root@bs-k8s-ceph ~]# ceph -s cluster: id: 11880418-1a9a-4b55-a353-4b141e2199d8 health: HEALTH_WARN ...

  4. 201871030127-王明强 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 18级卓越班 这个作业要求链接 实验三 软件工程结对项目 我的课程学习目标 1.熟悉PSP流程2. 熟悉github操作3.加深对D{0-1}问题的解法的理解4.熟悉ja ...

  5. 201871030114-蒋鑫 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接☛ 班级博客 这个作业要求链接☛ 作业要求 我的课程学习目标☛ 1. 体验软件项目开发中的两人合作,练习结对编程(Pair programming).2. 掌握Github ...

  6. 强大的 Guava 工具类

    Java 开发的同学应该都使用或者听说过 Google 提供的 Guava 工具包.日常使用最多的肯定是集合相关的工具类,还有 Guava cache,除了这些之外 Guava 还提供了很多有用的功能 ...

  7. 《Python编程:从入门到实践》基础知识部分学习笔记整理

    简介 此笔记为<Python编程:从入门到实践>中前 11 章的基础知识部分的学习笔记,不包含后面的项目部分. 书籍评价 从系统学习 Python 的角度,不推荐此书,个人更推荐使用< ...

  8. Team Queue UVA - 540

      Queues and Priority Queues are data structures which are known to most computer scientists. The Te ...

  9. 866. Prime Palindrome

    Find the smallest prime palindrome greater than or equal to N. Recall that a number is prime if it's ...

  10. 858. Mirror Reflection

    There is a special square room with mirrors on each of the four walls.  Except for the southwest cor ...