在命令行上使用 DNF 进行 CentOS 8 包管理
在此页
- 要求
- 安装 DNF
- 列出已安装和可用的包
- 搜索并安装包
- 更新系统包
- 列出并安装组包
- 列出存储库
- 删除包
- 结论
DNF 代表 Dandified YUM 是基于 RPM 的 Linux 发行版的软件包管理器。它用于在 Fedora/RHEL/CentOS 操作系统中安装、更新和删除软件包。它是 Fedora 22、CentOS8 和 RHEL8 的默认包管理器。 DNF 是 YUM 的下一代版本,旨在替代基于 RPM 的系统中的 YUM。 DNF 比您在 yum 中找到的更强大和更强大的功能。 DNF 使维护包组变得容易,并且能够自动解决依赖性问题。
在本教程中,我们将解释如何在 CentOS 8 上使用 DNF 管理包。
要求
- 一台运行 CentOS 8 的服务器。
- 已为您的服务器设置根密码。
安装 DNF
默认情况下,DNF 预装在 CentOS 8 操作系统中。如果没有安装,您可以通过运行以下命令来安装它:
yum install dnf
接下来,您可以使用以下命令检查 DNF 的版本:
dnf --version
您应该看到以下输出:
4.0.9
Installed: dnf-0:4.0.9.2-5.el8.noarch at Friday 04 October 2019 05:27:09 AM GMT
Built : CentOS Buildsys <> at Monday 13 May 2019 07:35:13 PM GMT
Installed: rpm-0:4.14.2-9.el8.x86_64 at Friday 04 October 2019 05:20:17 AM GMT
Built : CentOS Buildsys <> at Saturday 11 May 2019 02:04:19 AM GMT
列出已安装和可用的包
您可以使用以下命令列出系统上所有已安装的软件包:
dnf list installed
您应该在以下输出中看到所有已安装的软件包:
Installed Packages
NetworkManager.x86_64 1:1.14.0-14.el8 @anaconda
NetworkManager-config-server.noarch 1:1.14.0-14.el8 @anaconda
NetworkManager-libnm.x86_64 1:1.14.0-14.el8 @anaconda
NetworkManager-team.x86_64 1:1.14.0-14.el8 @anaconda
NetworkManager-tui.x86_64 1:1.14.0-14.el8 @anaconda
PackageKit.x86_64 1.1.12-2.el8 @AppStream
PackageKit-glib.x86_64 1.1.12-2.el8 @AppStream
acl.x86_64 2.2.53-1.el8 @anaconda
adcli.x86_64 0.8.2-2.el8 @anaconda
at.x86_64 3.1.20-11.el8 @anaconda
attr.x86_64 2.4.48-3.el8 @anaconda
audit.x86_64 3.0-0.10.20180831git0047a6c.el8 @anaconda
audit-libs.x86_64 3.0-0.10.20180831git0047a6c.el8 @anaconda
authselect.x86_64 1.0-13.el8 @anaconda
authselect-compat.x86_64 1.0-13.el8 @AppStream
authselect-libs.x86_64 1.0-13.el8 @anaconda
avahi-libs.x86_64 0.7-19.el8 @anaconda
basesystem.noarch 11-5.el8 @anaconda
您还可以使用以下命令列出所有已安装和可用的软件包:
dnf list
您应该看到以下输出:
Last metadata expiration check: 4 days, 22:47:10 ago on Friday 04 October 2019 02:14:39 AM EDT.
Installed Packages
NetworkManager.x86_64 1:1.14.0-14.el8 @anaconda
NetworkManager-config-server.noarch 1:1.14.0-14.el8 @anaconda
NetworkManager-libnm.x86_64 1:1.14.0-14.el8 @anaconda
NetworkManager-team.x86_64 1:1.14.0-14.el8 @anaconda
NetworkManager-tui.x86_64 1:1.14.0-14.el8 @anaconda
PackageKit.x86_64 1.1.12-2.el8 @AppStream
PackageKit-glib.x86_64 1.1.12-2.el8 @AppStream
acl.x86_64 2.2.53-1.el8 @anaconda
adcli.x86_64 0.8.2-2.el8 @anaconda
at.x86_64 3.1.20-11.el8 @anaconda
attr.x86_64 2.4.48-3.el8 @anaconda
audit.x86_64 3.0-0.10.20180831git0047a6c.el8 @anaconda
audit-libs.x86_64 3.0-0.10.20180831git0047a6c.el8 @anaconda
authselect.x86_64 1.0-13.el8 @anaconda
authselect-compat.x86_64 1.0-13.el8 @AppStream
authselect-libs.x86_64 1.0-13.el8 @anaconda
avahi-libs.x86_64 0.7-19.el8 @anaconda
:
:
您还可以使用以下命令仅列出可用的包:
dnf list available
您应该看到以下输出:
Last metadata expiration check: 4 days, 22:48:21 ago on Friday 04 October 2019 02:14:39 AM EDT.
Available Packages
BackupPC.src 4.3.1-2.el8 epel-source
BackupPC.x86_64 4.3.1-2.el8 epel
BackupPC-XS.src 0.59-3.el8 epel-source
BackupPC-XS.x86_64 0.59-3.el8 epel
BackupPC-XS-debuginfo.x86_64 0.59-3.el8 epel-debuginfo
BackupPC-XS-debugsource.x86_64 0.59-3.el8 epel-debuginfo
BackupPC-debuginfo.x86_64 4.3.1-2.el8 epel-debuginfo
BackupPC-debugsource.x86_64 4.3.1-2.el8 epel-debuginfo
CGSI-gSOAP.src 1.3.11-7.el8 epel-source
CGSI-gSOAP.x86_64 1.3.11-7.el8 epel
CGSI-gSOAP-debuginfo.x86_64 1.3.11-7.el8 epel-debuginfo
CGSI-gSOAP-debugsource.x86_64 1.3.11-7.el8 epel-debuginfo
CGSI-gSOAP-devel.x86_64 1.3.11-7.el8 epel
搜索并安装包
您可以使用以下命令搜索要安装的任何软件包:
dnf search httpd
您应该看到以下输出:
========================================================= Name Exactly Matched: httpd =========================================================
httpd.x86_64 : Apache HTTP Server
======================================================== Name & Summary Matched: httpd ========================================================
centos-logos-httpd.noarch : CentOS-related icons and pictures used by httpd
keycloak-httpd-client-install.noarch : Tools to configure Apache HTTPD as Keycloak client
python3-keycloak-httpd-client-install.noarch : Tools to configure Apache HTTPD as Keycloak client
============================================================= Name Matched: httpd =============================================================
httpd-devel.x86_64 : Development interfaces for the Apache HTTP server
httpd-tools.x86_64 : Tools for use with the Apache HTTP Server
httpd-manual.noarch : Documentation for the Apache HTTP server
libmicrohttpd.i686 : Lightweight library for embedding a webserver in applications
libmicrohttpd.x86_64 : Lightweight library for embedding a webserver in applications
httpd-filesystem.noarch : The basic directory layout for the Apache HTTP server
=========================================================== Summary Matched: httpd ============================================================
mod_dav_svn.x86_64 : Apache httpd module for Subversion server
mod_auth_mellon.x86_64 : A SAML 2.0 authentication module for the Apache Httpd Server
您现在可以使用以下命令安装 httpd 包:
dnf install httpd
要重新安装软件包 httpd,请运行以下命令:
dnf reinstall httpd
在某些情况下,您将需要下载包而不进行安装。您可以使用以下命令下载特定的包:
dnf download httpd
您还可以使用以下命令查看软件包 httpd 的详细信息:
dnf info httpd
您应该得到以下输出:
Last metadata expiration check: 0:01:02 ago on Wednesday 09 October 2019 01:07:23 AM EDT.
Available Packages
Name : httpd
Version : 2.4.37
Release : 11.module_el8.0.0+172+85fc1f40
Arch : x86_64
Size : 1.7 M
Source : httpd-2.4.37-11.module_el8.0.0+172+85fc1f40.src.rpm
Repo : AppStream
Summary : Apache HTTP Server
URL : https://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
更新系统包
首先,您可以使用以下命令检查系统上所有系统包的更新:
dnf check-update
您应该得到以下输出:
Last metadata expiration check: 0:00:10 ago on Wednesday 09 October 2019 01:10:16 AM EDT.
bind-export-libs.x86_64 32:9.11.4-17.P2.el8_0.1 BaseOS
bind-libs.x86_64 32:9.11.4-17.P2.el8_0.1 AppStream
bind-libs-lite.x86_64 32:9.11.4-17.P2.el8_0.1 AppStream
bind-license.noarch 32:9.11.4-17.P2.el8_0.1 AppStream
bind-utils.x86_64 32:9.11.4-17.P2.el8_0.1 AppStream
bpftool.x86_64 4.18.0-80.7.1.el8_0 BaseOS
cockpit.x86_64 185.1-1.el8_0 BaseOS
cockpit-bridge.x86_64 185.1-1.el8_0 BaseOS
cockpit-system.noarch 185.1-1.el8_0 BaseOS
cockpit-ws.x86_64 185.1-1.el8_0 BaseOS
epel-release.noarch 8-6.el8 epel
epel-release.src 8-6.el8 epel-source
iptables.x86_64 1.8.2-9.el8_0.1 BaseOS
iptables-ebtables.x86_64 1.8.2-9.el8_0.1 BaseOS
iptables-libs.x86_64 1.8.2-9.el8_0.1 BaseOS
kernel.x86_64 4.18.0-80.7.1.el8_0 BaseOS
kernel-core.x86_64 4.18.0-80.7.1.el8_0 BaseOS
kernel-modules.x86_64 4.18.0-80.7.1.el8_0 BaseOS
kernel-tools.x86_64 4.18.0-80.7.1.el8_0 BaseOS
kernel-tools-libs.x86_64 4.18.0-80.7.1.el8_0 BaseOS
您现在可以使用以下命令更新系统中安装的所有软件包:
dnf update
要更新特定包,请运行以下命令:
dnf update httpd
列出并安装组包
您可以使用以下命令列出所有组包:
dnf grouplist
您应该得到以下列表:
Last metadata expiration check: 0:03:42 ago on Wednesday 09 October 2019 01:10:16 AM EDT.
Available Environment Groups:
Server with GUI
Minimal Install
Workstation
KDE Plasma Workspaces
Virtualization Host
Custom Operating System
Installed Environment Groups:
Server
Installed Groups:
Container Management
Headless Management
Available Groups:
.NET Core Development
RPM Development Tools
Smart Card Support
Development Tools
Graphical Administration Tools
Legacy UNIX Compatibility
Network Servers
Scientific Support
Security Tools
System Tools
Fedora Packager
现在,使用以下命令安装特定的组包:
dnf groupinstall 'System Tools'
您还可以使用以下命令更新组包:
dnf groupupdate 'System Tools'
列出存储库
您可以使用以下命令列出所有存储库:
dnf repolist all
您应该看到以下输出:
Last metadata expiration check: 0:10:39 ago on Wednesday 09 October 2019 01:10:16 AM EDT.
repo id repo name status
AppStream CentOS-8 - AppStream enabled: 4,928
AppStream-source CentOS-8 - AppStream Sources disabled
BaseOS CentOS-8 - Base enabled: 2,713
BaseOS-source CentOS-8 - BaseOS Sources disabled
PowerTools CentOS-8 - PowerTools disabled
base-debuginfo CentOS-8 - Debuginfo disabled
c8-media-AppStream CentOS-AppStream-8 - Media disabled
c8-media-BaseOS CentOS-BaseOS-8 - Media disabled
centosplus CentOS-8 - Plus disabled
centosplus-source CentOS-8 - Plus Sources disabled
cr CentOS-8 - cr disabled
*epel Extra Packages for Enterprise Linux 8 - x86_64 enabled: 1,816
*epel-debuginfo Extra Packages for Enterprise Linux 8 - x86_64 - Debug enabled: 1,187
epel-playground Extra Packages for Enterprise Linux 8 - Playground - x86_64 disabled
epel-playground-debuginfo Extra Packages for Enterprise Linux 8 - Playground - x86_64 - Debug disabled
epel-playground-source Extra Packages for Enterprise Linux 8 - Playground - x86_64 - Source disabled
*epel-source Extra Packages for Enterprise Linux 8 - x86_64 - Source enabled: 792
*epel-testing Extra Packages for Enterprise Linux 8 - Testing - x86_64 enabled: 538
*epel-testing-debuginfo Extra Packages for Enterprise Linux 8 - Testing - x86_64 - Debug enabled: 347
*epel-testing-source Extra Packages for Enterprise Linux 8 - Testing - x86_64 - Source enabled: 216
extras CentOS-8 - Extras enabled: 3
extras-source CentOS-8 - Extras Sources disabled
fasttrack CentOS-8 - fasttrack disabled
现在,使用以下命令仅列出系统上已启用的存储库:
dnf repolist
您应该看到以下输出:
Last metadata expiration check: 0:12:14 ago on Wednesday 09 October 2019 01:10:16 AM EDT.
repo id repo name status
AppStream CentOS-8 - AppStream 4,928
BaseOS CentOS-8 - Base 2,713
*epel Extra Packages for Enterprise Linux 8 - x86_64 1,816
*epel-debuginfo Extra Packages for Enterprise Linux 8 - x86_64 - Debug 1,187
*epel-source Extra Packages for Enterprise Linux 8 - x86_64 - Source 792
*epel-testing Extra Packages for Enterprise Linux 8 - Testing - x86_64 538
*epel-testing-debuginfo Extra Packages for Enterprise Linux 8 - Testing - x86_64 - Debug 347
*epel-testing-source Extra Packages for Enterprise Linux 8 - Testing - x86_64 - Source 216
extras CentOS-8 - Extras 3
删除包
您可以使用以下命令从系统中删除任何不需要的包:
dnf remove httpd
接下来,通过运行以下命令删除与包 httpd 一起安装的不需要的依赖项:
dnf autoremove
您可以使用以下命令清除所有缓存的包:
dnf clean all
您还可以使用以下命令删除组包:
dnf groupremove 'System Tools'
结论
在上面的教程中,我们学习了如何在 CentOS 8 上使用 DNF 命令管理包。如果您有任何问题,请随时问我。