初学者的 DNF 命令示例

本教程为那些想知道如何使用 DNF 包管理器的人解释了所有基本命令。 你可能已经知道,DNF 是 YUM 的下一代版本,它一直是默认的包管理器 Fedora 22. 它旨在替代基于 RPM 的系统中的 YUM,例如 RHEL、CentOS。 与 YUM 相比,DNF 具有一些显着的优势,例如支持多个存储库、包组支持、更快的依赖解析速度和消耗更少的内存、可在 Python 2 和 Python 3 中运行、可靠的 API 文档、与 YUM 的兼容性等等。

  • 开始使用吃豆人

初学者的 DNF 命令示例

作为 Fedora 22、yum已经换成DNF了,上的话就不用安装了 Fedora. 在 CentOS 7 和 RHEL 7 上,您可以按照下面给出的教程中的说明安装它。

  • 如何在 CentOS 7 上安装 DNF

DNF 的用法与 YUM 非常相似。 此处提供的所有命令均在 CentOS 7 最小服务器版本上测试 用户。

1. 获得帮助

要列出所有主要命令、插件命令和选项,请运行:

# dnf help

要获得有关特定命令的帮助,对于 example “安装”,运行:

# dnf help install

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

# dnf --version

2. 管理包

本节介绍安装、更新、列出、搜索、下载、重新安装和删除软件包。

获取包裹信息

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

# dnf info vim

安装包

要安装新软件包,对于 example 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 Feb 10 14:47:22 2018
Installed Packages
yum.noarch 3.4.3-150.el7.centos @System
Available Packages
yum.noarch 3.4.3-154.el7.centos.1 update

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

要更新多个包:

# 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-enhanced-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

要安装软件包组,对于 example “开发工具”,运行:

# 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 https://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/

要查看新添加的存储库,我们执行以下操作:

# dnf repolist
created by dnf config-manager from https://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/ 115 kB/s | 3.5 MB 00:31 
Using metadata from Sat Feb 10 14:47:22 2018
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 https://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 https://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/
baseurl=https://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 包。

禁用存储库

要禁用存储库,对于 example EPEL,我们使用:

# dnf config-manager --set-disabled epel

我们还可以将启用和禁用选项组合在一起,如下所示。

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

上述命令将启用 EPEL 存储库并禁用更新存储库。

5. 寻找能提供某些东西的东西

DNF 允许您查找哪个包提供了特定的命令或文件。 如果您不记得确切的软件包提供了您想要使用的特定命令,DNF 可以帮助您。

查找提供特定命令的包

我想念旧的“ifconfig”命令。 此命令已弃用,并且在最新版本中不可用。 要查找提供此 gem 的包,请运行:

# dnf provides */ifconfig

样本输出:

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

啊,是的! 网络工具 包提供了这个命令。 所以你可以安装这个包来使用 ifconfig 命令。

查找哪个包提供文件

让我们你想找到什么包提供 /bin/ls 文件。 为此,请运行:

# dnf provides */bin/ls
Using metadata from Thu Jun 30 12:51:16 2016
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

正如您在上面的输出中看到的, 核心工具 包提供 /bin/ls 文件。

  • 如何在 Linux 中找到提供特定文件的包

6. 使用 DNF 历史

使用“dnf history”命令,我们可以查看我们使用 DNF 命令执行的所有操作。

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

正如您在上面的输出中看到的,有两笔交易。 我安装了一个名为“vim”的包并更新了包“bash”。最新的交易将出现在顶部。

要查看特定交易的详细信息,请使用其 ID,如下所示。

# dnf history list 2

我们还可以查看特定交易的完整详细信息,如下所示。

# dnf history info 2
Using metadata from Sat Feb 10 14:47:22 2018
Transaction ID : 2
Begin time : Sat Feb 10 14:55:38 2018
Begin rpmdb : 360:fa7bea798a10e850b2bf800182b377443b481652
End time : 14:55:39 2018 (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 https://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

这些足以让您了解 DNF 的基本用法 Fedora、RHEL 和 CentOS。 有关更多详细信息,请参阅手册页。

$ man dnf

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!