dnf命令示例

时间:2020-03-21 11:43:27  来源:igfitidea点击:

DNF是yum的下一代版本,它是Fedora 22自从Fedora 22以来的默认包管理器。
它旨在成为RPM的基于RPM的系统中的yum,如Rhel,CentOS。
与yum相比,DNF具有一些显着的优势,例如对多个存储库的支持,包组支持,更快的依赖性解决速度并消耗较少的内存,在Python 2和Python 3中运行,符合yum和许多兼容性。

dnf命令示例

截至Fedora 22,YUM已被DNF替换,因此如果我们在Fedora上,我们无需安装它。

DNF用法与Yum非常相似。
此处提供的所有命令都以带有root用户的CentOS 7 Minimal Server Edition测试。

1.获得帮助

要列出所有Main命令,请运行Plugin命令和选项:

# dnf help

要获得特定命令的帮助,例如"安装",请运行:

# dnf help install

要了解当前安装的DNF版本,请运行:

# dnf --version

2.管理包

本节介绍安装,更新,列表,搜索,下载,重新安装和删除包。

获取软件包信息

要获取任何已安装或者未安装的包的详细信息,请运行:

# dnf info vim

安装包

要安装新包,例如Vim,请运行:

# dnf install vim

我们还可以安装如下所示的多个包。

# dnf install vim nano emacs

我们需要键入"Y"以继续安装。
如果我们每次都不想这样做,则可以在"自动确认的命令"中包含"y"选项。

# dnf install vim nano emacs -y

这将不等待用户确认。
相反,它将仅自动安装所有包。

列出包

要列出所有可用和已安装的软件包:

# dnf list

仅列出所有已安装的软件包,我们使用:

# dnf list installed

仅列出可用包:

# dnf list available

更新软件包

要检查所有可用更新,请执行以下操作:

# dnf check-update

或者,

# dnf list updates

要更新单个包(例如Bash),请运行:

# dnf update bash

要查看已安装包是否有任何更新,请运行:

# dnf list yum.noarch 
Using metadata from Sat Nov 10 14:47:22 2016
Installed Packages
yum.noarch 3.4.3-150.el7.centos @System
Available Packages
yum.noarch 3.4.3-154.el7.centos.1 update

此命令将显示当前安装的版本和来自存储库的可用更新。
在上面的输出中,@System指定已安装的版本,更新指定存储库中的可用更新。

要更新多个包:

# dnf update package1 package2

通过"y"选项进行自动确认。

# dnf update package1 package2 -y

要更新/升级所有包,请运行:

# dnf update
# dnf upgrade

要将已安装的软件包同步到最新可用版本:

# dnf distro-sync

搜索软件包

要从存储库中搜索包,请运行:

# dnf search vim

此命令将列出与"vim"单词匹配的所有包。

下载软件包

有时我们可能希望下载包,但不想立即安装它。
如果是这样,请运行:

# dnf download vim

此命令将下载Vim-oppanced-xx.xx.x.rpm包,但不会安装它。

要安装下载的包,请运行:

# dnf install vim-enhanced-7.4.160-2.el7.x86_64.rpm

将从存储库下载并安装所有其他必需的依赖项。

降级包

降级我们以前更新的包,运行:

# dnf downgrade bash

重新安装软件包

拥有已安装包的任何问题?
不用担心!我们可以随时重新安装它。

要重新安装包,请使用:

# dnf reinstall vim

删除软件包

从系统中删除包(例如,Vim),运行:

# dnf remove vim

我们还可以使用以下"擦除"选项。

# dnf erase vim

3.包组

包组是一种用于共同目的的包的集合,例如"开发工具"或者"Web服务器"。
安装包组时,将下载并安装所有相关包。
安装组将节省大量时间。

安装包组

要列出所有可用包组,请运行:

# dnf grouplist

要安装包组,例如"开发工具",运行:

# dnf groupinstall 'Development Tools'

此命令将安装设置开发环境所需的所有包。

更新包组

要更新包组,请运行:

# dnf groupupdate 'Development Tools'

删除包组

要删除包组,请运行:

# dnf groupremove 'Development Tools'

4.存储库

列出已安装的存储库

默认情况下,所有存储库都将在CentOS/Rhel中的/etc/yum.repos.d/目录下添加。
我们可以使用命令列出已安装的存储库:

# dnf repolist

上面的命令只会显示已启用的存储库。
要显示所有存储库(启用和禁用),运行:

# dnf repolist all

添加存储库

我们可以通过手动在/etc/yum.repos.d/目录下手动创建package.repo文件来添加存储库。
但是,DNF使它变得更加容易。

要添加新存储库,请运行:

# dnf config-manager --add-repo repository_url

例子:

# dnf config-manager --add-repo http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/

要查看新添加的存储库,我们会做:

# dnf repolist
created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/115 kB/s | 3.5 MB 00:31 
Using metadata from Sat Nov 10 14:47:22 2016
repo id repo name status
base CentOS-7 - Base 9,591
epel Extra Packages for Enterprise Linux 7 - x86_64 12,278
extras CentOS-7 - Extras 388
springdale.math.ias.edu_data_puias_unsupported_7_x86_64_ created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupporte 2,760
updates CentOS-7 - Updates

仅查看.repo文件:

# cat /etc/yum.repos.d/springdale.math.ias.edu_data_puias_unsupported_7_x86_64_.repo 
[springdale.math.ias.edu_data_puias_unsupported_7_x86_64_]
name=created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/
baseurl=http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/
enabled=1

启用存储库

要启用存储库,请使用:

# dnf config-manager --set-enabled <repo-id>

例子:

# dnf config-manager --set-enabled epel

我们可以通过运行以下命令来验证仅查看启用的存储库。

# dnf repolist

此外,我们可以将启用和安装选项组合在一起。

# dnf config-manager --set-enabled epel install zsh

上面的命令启用epel存储库并安装zsh包。

禁用存储库

要禁用存储库,例如EPEL,我们使用:

# dnf config-manager --set-disabled epel

我们还可以将启用和禁用选项组合在一起。

# dnf --enablerepo=epel --disablerepo=updates

上面的命令将启用epel存储库并禁用更新存储库。

5.找到它提供的东西

DNF允许我们找到哪个包提供特定命令或者文件。
如果我们不记得完全完全提供我们想要使用的特定命令,DNF可以。

找到哪个软件包提供特定命令

我想念旧的"ifconfig"命令。
此命令已不推荐使用,而不是最近的版本。
要查找哪个包提供此宝石,请运行:

# dnf provides */ifconfig

示例输出:

Using metadata from Thu Nov 8 15:52:17 2016
net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking tools
Repo : base

啊,是的! Net-Tools包提供此命令。
因此,我们可以安装此软件包以使用ifconfig命令。

找到哪个包提供文件

让我们想找到软件包提供的软件包/LS文件。
为此,运行:

# dnf provides */bin/ls
Using metadata from Thu Jun 30 12:51:16 2015
coreutils-8.22-18.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo : @System
coreutils-8.22-18.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo : base

正如我们在上面的输出中看到的那样,Coreutils包提供/bin/ls文件。

6.使用DNF历史

使用"dnf历史记录"命令,我们可以查看使用dnf命令执行的所有操作。

# dnf history
Using metadata from Sat Nov 10 14:47:22 2016
ID | Command line | Date a | Action | Altere
------------------------------------------------------------------------------
 2 | update bash | 2016-02-10 14:55 | Update | 1 
 1 | install vim | 2016-02-10 14:51 | E, I | 33 EE

如上所述,有两个交易。
我安装了名为"Vim"的包,并更新了包"bash"。
最新的事务将显示在顶部。

要查看特定事务的详细信息,请使用下面的ID。

# dnf history list 2

我们还可以查看以下特定事务的完整详细信息。

# dnf history info 2
Using metadata from Sat Nov 10 14:47:22 2016
Transaction ID : 2
Begin time : Sat Nov 10 14:55:38 2016
Begin rpmdb : 360:fa7bea798a10e850b2bf800182b377443b481652
End time : 14:55:39 2016 (1 seconds)
End rpmdb : 360:dc9f6bb33b00fe1d74dd205586c0ff8c4674f8f7
User : root <root>
Return-Code : Success
Command Line : update bash
Transaction performed with:
 Installed dnf-0.6.4-2.sdl7.noarch (unknown)
 Installed rpm-4.11.3-21.el7.x86_64 (unknown)
Packages Altered:
 Upgraded bash-4.2.46-21.el7_3.x86_64 (unknown)
 Upgrade 4.2.46-29.el7_4.x86_64 @updates

如我们所见,使用ID为2的事务用于更新名为"Bash"的包。
我们可以随时使用命令撤消此事务:

# dnf history undo 2

重做以前的'撤消'事务,只要运行:

# dnf history redo 2

7.构建DNF元数据缓存

DNF元数据缓存将在安装时自动创建,更新包。
所以我们不需要手动构建它。
但是,DNF有一个内置命令,可以更快地构建缓存以使未来事务更快。

要创建元数据缓存,请运行:

# dnf makecache
Extra Packages for Enterprise Linux 7 - x86_64 155 kB/s | 15 MB 01:35 
created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/136 kB/s | 3.5 MB 00:26 
CentOS-7 - Base 195 kB/s | 9.5 MB 00:49 
CentOS-7 - Updates 240 kB/s | 7.9 MB 00:33 
CentOS-7 - Extras 84 kB/s | 820 kB 00:09 
Metadata cache created.

8.清理

删除不需要的/孤儿包,运行:

# dnf autoremove

要删除所有缓存包,请运行:

# dnf clean all

我们可以完全清洁缓存,而是可以为元数据,dbcache,包,插件等个人清洁。

要删除从存储库元数据生成的缓存文件:

# dnf clean dbcache

这会强制DNF在下次运行时重新生成缓存文件。

要删除本地cookie文件,请在为每个repo下载元数据和镜像列表时,运行:

# dnf clean expire-cache

DNF将在下次使用它时重新验证每个repo的缓存。

要删除存储库元数据:

# dnf clean metadata

使用此选项将在下次运行时使DNF下载所有元数据。

要从系统中删除所有缓存包:

# dnf clean packages

以下命令告诉所有已启用的插件以消除其缓存的数据。

# dnf clean plugins

这些只是足以在Fedora,Rhel和CentOS上获得DNF的基本用法。
有关更多详细信息,请参阅man页面。

$man dnf