侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux dnf命令教程:如何使用新一代的RPM软件包管理器(附实例详解和注意事项)

Linux dnf命令介绍

dnf是一个软件包管理器,它可以用来安装、更新、删除和管理Linux系统上的软件包。dnf是Dandified Yum的缩写,它是yum的下一代版本,它提供了更快的性能、更好的依赖解决、更丰富的插件和更友好的用户界面。dnf还支持多种软件仓库,可以让用户方便地获取和安装不同来源的软件包。

Linux dnf命令适用的Linux版本

dnf命令主要适用于基于Fedora的Linux发行版,如Fedora、Red Hat Enterprise Linux、CentOS等。dnf在Fedora 22及以上版本中已经取代了yum作为默认的软件包管理器。在Red Hat Enterprise Linux 8及以上版本中,dnf也已经替换了yum。在CentOS 8及以上版本中,dnf也是默认的软件包管理器,但yum仍然可以使用,它实际上是dnf的一个软链接。

如果你使用的是其他的Linux发行版,如Ubuntu、Debian、Arch Linux等,你可能需要安装dnf才能使用它。你可以通过你的发行版的软件包管理器来安装dnf,或者从源代码编译安装dnf。以下是一些常见的Linux发行版的安装dnf的命令:

  • Ubuntu/Debian: sudo apt install dnf
  • Arch Linux: sudo pacman -S dnf
  • Gentoo: sudo emerge dnf

Linux dnf命令的基本语法

dnf命令的基本语法格式如下:

dnf [options] [command] [package ...]

其中,options是一些可选的参数,用来控制dnf的行为和输出。command是要执行的操作,如安装、更新、删除等。package是要操作的软件包的名称,可以是一个或多个,也可以使用通配符或正则表达式来匹配多个软件包。

Linux dnf命令的常用选项或参数说明

dnf命令有很多的选项和参数,可以用来调整dnf的功能和输出。以下是一些常用的选项和参数的说明:

选项/参数说明
-h, --help显示dnf的帮助信息
-y, --assumeyes自动回答yes,不需要用户确认
-v, --verbose显示详细的输出信息
-q, --quiet只显示错误和警告信息,不显示其他输出
-C, --cacheonly只使用缓存中的数据,不从网络更新
--refresh强制刷新缓存中的数据,从网络更新
--best在安装或更新时,尝试使用最新的软件包版本
--allowerasing在安装或更新时,允许删除一些冲突的软件包
--downloadonly只下载软件包,不安装或更新
--installroot指定一个目录作为根目录,dnf会在该目录下操作
--enablerepo启用指定的软件仓库
--disablerepo禁用指定的软件仓库
--releasever指定一个发行版的版本号,dnf会使用该版本的软件仓库

Linux dnf命令的常见技巧或高级技巧

  • 如果你想查看dnf命令的所有选项和子命令,你可以使用dnf help命令。
  • 如果你想查看某个子命令的用法和选项,你可以使用dnf help 命令,如dnf help install。
  • 如果你想查看dnf命令的执行历史,你可以使用dnf history命令,它会显示你之前执行过的dnf命令的编号、日期、操作、软件包等信息。
  • 如果你想撤销某个dnf命令的操作,你可以使用dnf history undo 命令,其中id是你想撤销的命令的编号,你可以从dnf history命令的输出中找到。

Linux dnf命令的实例

如何使用dnf列出可用的软件仓库

dnf命令可以使用dnf repolist命令来列出系统上可用的软件仓库,包括已经启用和禁用的。输出中会显示每个软件仓库的ID、名称、状态和软件包的数量。例如:

[linux@bashcommandnotfound.cn ~]$ dnf repolist
repo id                      repo name                                  status
AppStream                    CentOS Linux 8 - AppStream                 6,123
BaseOS                       CentOS Linux 8 - BaseOS                    2,843
*epel                        Extra Packages for Enterprise Linux 8 - x8 6,713
*epel-modular                Extra Packages for Enterprise Linux Modula   23
extras                       CentOS Linux 8 - Extras                      30

如何使用dnf搜索软件包

dnf命令可以使用dnf search命令来搜索软件包,可以根据软件包的名称、描述、摘要等信息来匹配。输出中会显示每个匹配的软件包的名称和摘要。例如:

[linux@bashcommandnotfound.cn ~]$ dnf search vim
Last metadata expiration check: 0:02:12 ago on Mon 18 Dec 2023 15:09:37 GMT+08:00.
============================ Name Exactly Matched: vim ============================
vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements
vim-minimal.x86_64 : A minimal version of the VIM editor
vim-common.x86_64 : The common files needed by any version of the VIM editor
vim-filesystem.noarch : VIM filesystem layout
================================ Name Matched: vim ================================

如何使用dnf安装软件包

如果你想安装某个软件包,你可以使用dnf install 命令,其中package是你想安装的软件包的名称,如:

   [linux@bashcommandnotfound.cn ~]$ dnf install nano
Last metadata expiration check: 0:11:23 ago on Mon 18 Dec 2023 15:09:24 GMT+08:00.
Dependencies resolved.
===============================================================================
 Package          Architecture    Version             Repository        Size
===============================================================================
Installing:
 nano             x86_64          2.9.8-1.el8         AppStream        581 k
Installing dependencies:
 nano-libs        x86_64          2.9.8-1.el8         AppStream        150 k

Transaction Summary
===============================================================================
Install  2 Packages

Total download size: 731 k
Installed size: 2.7 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): nano-libs-2.9.8-1.el8.x86_64.rpm          1.3 MB/s | 150 kB     00:00
(2/2): nano-2.9.8-1.el8.x86_64.rpm               2.4 MB/s | 581 kB     00:00
-------------------------------------------------------------------------------
Total                                           1.9 MB/s | 731 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                       1/1
...

Complete!

如何使用dnf列出软件包的依赖关系

如果你想查看某个软件包的依赖关系,你可以使用dnf deplist <package>命令,其中package是你想查看的软件包的名称,如:

[linux@bashcommandnotfound.cn ~]$ dnf deplist nano
Last metadata expiration check: 0:15:34 ago on Mon 18 Dec 2023 15:09:24 GMT+08:00.
package: nano.x86_64 2.9.8-1.el8
  dependency: /bin/sh
...
   provider: glibc.i686 2.28-101.el8

这个命令会显示软件包的名称、架构和版本,以及它所依赖的其他软件包或文件,以及提供这些依赖的软件包的名称、架构和版本。

如何使用dnf下载软件包而不安装

如果你想下载某个软件包而不安装它,你可以使用dnf download <package>命令,其中package是你想下载的软件包的名称,如:

[linux@bashcommandnotfound.cn ~]$ dnf download nano
Last metadata expiration check: 0:16:45 ago on Mon 18 Dec 2023 15:09:24 GMT+08:00.
nano-2.9.8-1.el8.x86_64.rpm                                  2.4 MB/s | 581 kB     00:00

这个命令会下载软件包的RPM文件到当前目录,你可以使用ls命令来查看它,如:

[linux@bashcommandnotfound.cn ~]$ ls nano-2.9.8-1.el8.x86_64.rpm
nano-2.9.8-1.el8.x86_64.rpm

你可以在以后使用dnf install <rpm-file>命令来安装这个RPM文件,如:

[linux@bashcommandnotfound.cn ~]$ dnf install nano-2.9.8-1.el8.x86_64.rpm

如何使用dnf回滚软件包的操作

如果你想回滚某个软件包的操作,比如安装、升级或删除,你可以使用dnf history undo <id>命令,其中id是你想回滚的操作的编号,你可以从dnf history命令的输出中找到,如:

[linux@bashcommandnotfound.cn ~]$ dnf history
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    10 | install nano             | 2023-12-18 15:26 | Install        |    2   
     9 | update systemd           | 2023-12-18 15:25 | Update         |    1   
     8 | install phpmyadmin       | 2023-12-18 15:24 | Install        |   13   
     7 | remove nano              | 2023-12-18 15:23 | Erase          |    2   
     6 | install nano             | 2023-12-18 15:22 | Install        |    2   
     5 | install tigervnc-server  | 2023-12-18 15:21 | Install        |    4   
     4 | update                   | 2023-12-18 15:20 | Update         |   23   
     3 | install dnf              | 2023-12-18 15:19 | Install        |   10   
     2 | install epel-release     | 2023-12-18 15:18 | Install        |    1   
     1 |                          | 2023-12-18 15:17 | Install        |  354 EE

如果你想回滚安装nano的操作,你可以使用dnf history undo 10命令,如:

[linux@bashcommandnotfound.cn ~]$ dnf history undo 10
Last metadata expiration check: 0:17:56 ago on Mon 18 Dec 2023 15:09:24 GMT+08:00.
Dependencies resolved.
===============================================================================
 Package          Architecture    Version             Repository        Size
===============================================================================
Removing:
 nano             x86_64          2.9.8-1.el8         @AppStream        2.7 M
Removing dependent packages:
 nano-libs        x86_64          2.9.8-1.el8         @AppStream        412 k

Transaction Summary
===============================================================================
Remove  2 Packages

...
    
Removed:
  nano-2.9.8-1.el8.x86_64            nano-libs-2.9.8-1.el8.x86_64

Complete!

这个命令会删除nano和它的依赖包,你需要输入y来确认回滚操作,或者你可以在命令中加上-y选项,来自动回答yes,如dnf history undo -y 10

如何更新软件包

dnf命令可以使用dnf update命令来更新软件包,可以指定一个或多个软件包的名称,也可以使用通配符或正则表达式来匹配多个软件包。如果不指定软件包的名称,dnf会更新所有可用的软件包。例如,如果要更新vim编辑器,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo dnf update vim

如果要更新所有以vim开头的软件包,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo dnf update vim*

如果要更新所有包含vim的软件包,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo dnf update '*vim*'

如果要更新所有可用的软件包,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo dnf update

dnf会自动解决软件包的依赖关系,并提示用户确认更新。如果要自动回答yes,可以使用-y选项,例如:

[linux@bashcommandnotfound.cn ~]$ sudo dnf update -y vim

如果要在更新时,尝试使用最新的软件包版本,可以使用--best选项,例如:

[linux@bashcommandnotfound.cn ~]$ sudo dnf update --best vim

如果要在更新时,允许删除一些冲突的软件包,可以使用--allowerasing选项,例如:

[linux@bashcommandnotfound.cn ~]$ sudo dnf update --allowerasing vim

如何删除软件包

dnf命令可以使用dnf remove命令来删除软件包,可以指定一个或多个软件包的名称,也可以使用通配符或正则表达式来匹配多个软件包。例如,如果要删除vim编辑器,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo dnf remove vim

如果要删除所有以vim开头的软件包,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo dnf remove vim*

如果要删除所有包含vim的软件包,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo dnf remove '*vim*'

dnf会自动解决软件包的依赖关系,并提示用户确认删除。如果要自动回答yes,可以使用-y选项,例如:

[linux@bashcommandnotfound.cn ~]$ sudo dnf remove -y vim

如何列出已安装的软件包

dnf命令可以使用dnf list命令来列出已安装的软件包,可以指定一个或多个软件包的名称,也可以使用通配符或正则表达式来匹配多个软件包。如果不指定软件包的名称,dnf会列出所有已安装的软件包。输出中会显示每个软件包的名称、版本、发行版和仓库。例如,如果要列出已安装的vim编辑器,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ dnf list vim
Installed Packages
vim-enhanced.x86_64            2:8.2.2815-1.fc33            @updates

如果要列出已安装的所有以vim开头的软件包,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ dnf list vim*
Installed Packages
vim-common.x86_64              2:8.2.2815-1.fc33            @updates
vim-enhanced.x86_64            2:8.2.2815-1.fc33            @updates
vim-filesystem.noarch          2:8.2.2815-1.fc33            @updates
vim-minimal.x86_64             2:8.2.2815-1.fc33            @updates

如果要列出已安装的所有包含vim的软件包,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ dnf list '*vim*'
Installed Packages
vim-common.x86_64              2:8.2.2815-1.fc33            @updates
vim-enhanced.x86_64            2:8.2.2815-1.fc33            @updates

如何查看软件包的信息

dnf命令可以使用dnf info命令来查看软件包的信息,可以指定一个或多个软件包的名称,也可以使用通配符或正则表达式来匹配多个软件包。如果不指定软件包的名称,dnf会查看所有可用的软件包的信息。输出中会显示每个软件包的名称、版本、发行版、仓库、大小、描述、许可证、URL等信息。例如,如果要查看vim编辑器的信息,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ dnf info vim
Installed Packages
Name         : vim-enhanced
Version      : 8.2.2815
Release      : 1.fc33
Architecture : x86_64
Size         : 3.4 M
Source       : vim-8.2.2815-1.fc33.src.rpm
Repository   : @System
From repo    : updates
Summary      : A version of the VIM editor which includes recent enhancements
...

如果要查看所有以vim开头的软件包的信息,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ dnf info vim*
Installed Packages
Name         : vim-common
Version      : 8.2.2815
Release      : 1.fc33
Architecture : x86_64
Size         : 11 M
Source       : vim-8.2.2815-1.fc33.src.rpm
    ...

Linux dnf命令的注意事项

  • dnf命令需要root权限或sudo权限才能执行安装、升级、删除等操作,否则会提示权限不足。
  • dnf命令会自动处理软件包的依赖关系,但有时可能会出现冲突或错误,你需要仔细阅读输出信息,根据提示进行选择或解决。
  • dnf命令会缓存软件仓库的元数据和下载的软件包,以加快后续的操作,但有时可能会导致缓存过期或占用空间,你可以使用dnf clean命令来清理缓存。
  • dnf命令有很多可用的插件,可以增强其功能和兼容性,你可以使用dnf search dnf-plugin命令来查找可用的插件,然后使用dnf install命令来安装它们。
  • 如果你执行了错误的操作,或者想恢复之前的状态,你可以使用dnf history命令来查看操作历史,然后使用dnf history undo命令来回滚操作。
1

评论区