---
author: Jan Silhan
category: 新闻
comments_data:
- date: '2015-05-20 14:47:05'
  message: 想当初，我发现那么多的仓库……
  postip: 121.8.107.178
  username: 文剑一飞
- date: '2015-05-21 09:12:33'
  message: 没介绍这么使用？
  postip: 218.107.217.213
  username: 7th
- date: '2015-05-21 09:22:27'
  message: 嗯，还没有呢。
  postip: 106.120.101.58
  username: linux
- date: '2015-05-22 16:26:05'
  message: dnf，地下城？
  postip: 123.165.237.152
  username: 来自 - 黑龙江哈尔滨 的 Chrome/Windows 用户
- date: '2015-05-23 07:20:02'
  message: 瞬间感觉不高兴了...毒奶粉.
  postip: 106.117.12.141
  username: stone19901214
- date: '2015-05-24 09:09:32'
  message: 要怎么用？
  postip: 218.26.55.47
  username: wissy
- date: '2015-05-24 09:09:58'
  message: 还好我用的是apt
  postip: 218.26.55.47
  username: wissy
- date: '2016-12-19 09:58:02'
  message: 那个。。不玩DNF的路过
  postip: 118.144.186.201
  username: maopudazahui [Internet Explorer 11.0|Windows 10]
count:
  commentnum: 8
  favtimes: 1
  likes: 0
  sharetimes: 0
  viewnum: 12459
date: '2015-05-19 10:31:29'
editorchoice: false
excerpt: 也许你会惊奇在新安装的 Fedroa 22中没有找到 yum 包，也不明白为何在调用 /usr/bin/yum 或使用各种 Yum 插件时会得到警告。嗯，你看到的没错，Yum
  已经去了~。直白的说， DNF 现在是 Fedora 上默认是包管理器了。 DNF 由 Yum 中分支出来，采用了基于 SAT 的依赖解决算法，目标是在 Fedora
  22中取代 Yum。随着DNF 1.0 的发布，已经到了取而代之的时候了。Yum 无法适应倡导默认即 Python 3理念的 Fedora ，而 DNF 则可以同时支持
  Python 2 和 Python 3。 DNF按照相同的语义逻辑保留了命令行接口的一致。幸运的是，DNF 的 Python API 是完全
fromurl: http://dnf.baseurl.org/2015/05/11/yum-is-dead-long-live-dnf/
id: 5463
islctt: true
largepic: /images/p/201505/19/103032wuu8o9ufuobmu302.png
permalink: /article-5463-1.html
pic: /images/p/201505/19/103032wuu8o9ufuobmu302.png.thumb.jpg
related:
- displayorder: 0
  raid: 8833
reviewer: ''
selector: ''
summary: 也许你会惊奇在新安装的 Fedroa 22中没有找到 yum 包，也不明白为何在调用 /usr/bin/yum 或使用各种 Yum 插件时会得到警告。嗯，你看到的没错，Yum
  已经去了~。直白的说， DNF 现在是 Fedora 上默认是包管理器了。 DNF 由 Yum 中分支出来，采用了基于 SAT 的依赖解决算法，目标是在 Fedora
  22中取代 Yum。随着DNF 1.0 的发布，已经到了取而代之的时候了。Yum 无法适应倡导默认即 Python 3理念的 Fedora ，而 DNF 则可以同时支持
  Python 2 和 Python 3。 DNF按照相同的语义逻辑保留了命令行接口的一致。幸运的是，DNF 的 Python API 是完全
tags:
- Yum
- DNF
thumb: false
title: Yum 已死，DNF 代之
titlepic: false
translator: wxy
updated: '2015-05-19 10:31:29'
---

![](/images/p/201505/19/103032wuu8o9ufuobmu302.png)


也许你会惊奇在新安装的 Fedroa 22中没有找到 yum 包，也不明白为何在调用 /usr/bin/yum 或使用各种 Yum 插件时会得到警告。嗯，你看到的没错，Yum 已经去了~。直白的说， DNF 现在是 Fedora 上默认是包管理器了。


DNF 由 Yum 中分支出来，采用了基于 SAT 的依赖解决算法，目标是在 Fedora 22中取代 Yum。随着 [DNF 1.0 的发布](http://dnf.baseurl.org/2015/05/11/dnf-1-0-and-dnf-plugins-core-0-1-7-released/)，已经到了[取而代之](http://fedoraproject.org/wiki/Changes/ReplaceYumWithDNF)的时候了。Yum 无法适应倡导“默认即 Python 3”理念的 Fedora ，而 DNF 则可以同时支持 Python 2 和 Python 3。 DNF 按照相同的语义逻辑保留了命令行接口的一致。幸运的是，[DNF 的 Python API](http://dnf.readthedocs.org/en/latest/use_cases.html) 是完全不同于 Yum 的。这两个项目之间的所有已知的[不兼容](http://dnf.readthedocs.org/en/latest/cli_vs_yum.html)都已经记录在案了。在 Fedora Core 22 中只有 DNF，官方不会提供 Yum 了。当然，如果你愿意，可以自己下载它。这个包仍然可以如同以往一样调用， Python API 也没变化，只是 yum 程序的名称被改名为 yum-deprecated 了，而且从命令行调用 yum 会被重定向到 DNF。这样，你就可以在系统上同时维持 Yum 和 DNF 了。


启动 DNF 项目的原因是由于 Yum 的三大问题：API 缺乏文档、有问题的依赖解决算法，及无法重构内部函数。这里提到的最后一个问题，其实和文档的缺乏有关。Yum 插件使用的各种方法来源于 Yum 的代码，一旦改变有可能造成 Yum 的突然崩溃！DNF 致力于解决这些 Yum 的问题，从一开始，所有对外的 API 的要做好完备的文档。在绝大多数新提交中都包含了测试单元。不允许各种奇怪的、乱七八糟的补丁。该项目是通过敏捷开发进行的：对用户会有较大影响的需求会得到尽快的实现。


现在，DNF 团队正在移植各种流行的 Yum 插件到 DNF 上，并改进其用户体验。为了更加方便切换到 DNF，我们开发了一个 DNF 移植插件，来将 Yum 中已经安装的包、分组和事务数据导入到新的 Fedora 包管理器中。赶快转移到 DNF 吧，希望你喜欢！


 


Jan Silhan, by DNF team