DNF包管理指南

Table of Contents

从Fedora 22开始,DNF正式取代Yum,成为系统默认的包管理器。相比Yum,DNF优势:

1、更换了依赖解决的算法;

2、DNF是Python写的,同时支持Python2和Python3,并且代码更干净。

1 搜索包

dnf search python-pip

2 安装包

sudo dnf install python-pip

2.1 安装编译依赖

需要手动编译软件时自动安装所需的依赖:

sudo dnf builddep 包名

3 卸载包

sudo dnf remove python-pip

3.1 清理系统中无用的包

类似apt-get autoremove:

sudo dnf autoremove

4 更新包

升级一个包:

sudo dnf upgrade python-pip

或更新系统中所有包:

sudo dnf upgrade python-pip

5 列出包

列出已安装的包:

dnf list installed <可选:包名/关键字>

列出可安装的包:

dnf list available <可选:包名/关键字>

6 查找包

查找命令属于哪个软件包

需要提供命令的绝对路径。一般我需要下载某个命令的源码时,就需要先知道它属于哪个包:

dnf provides /bin/bash

也可以使用rpm命令:

rpm -qf /bin/bash

查找哪个包包含了指定文件

如果编译某个软件、运行某个命令,系统找不到时,可以用“*”代替上层路径搜索:

dnf provides '*/magic.h'

列出Yum仓库中某个包的文件列表

例,想用pip3安装一个包,系统找不到pip3命令,而用dnf安装python3-pip时提示已安装。用以下命令即可列出python3-pip包有哪些文件:

dnf repoquery -l python3-pip

7 下载包

dnf download python
dnf download --source python # 加--source表示下载源码

# 老系统中用的yum-utils的命令
yumdownloader python
yumdownloader --source python

给定的参数是包的名字,如果要下载某个命令的源码,需要先知道命令所属的包。以alternatives命令为例:

1、得到命令具体位置:

whereis alternatives

2、查询命令所属的包:

dnf provides /usr/sbin/alternatives

或:

rpm -qf /usr/sbin/alternatives

3、下载

dnf download chkconfig

8 更多帮助

  • DNF官方文档
  • man dnf
  • man dnf.plugin.插件名,查看某个DNF插件详细帮助