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
命令来回滚操作。
评论区