在 Red Hat Enterprise Linux 中安装软件

Red Hat Enterprise LinuxBeginner
立即练习

介绍

在这个实验中,你将通过 DNF 工具,在 Red Hat Enterprise Linux (RHEL) 系统上实践软件包的管理。你将首先了解 subscription-manager 命令,用于在模拟环境中注册 Red Hat 支持。随后,你将学习如何获取和解读 RPM 软件包信息,并掌握使用 DNF 安装和删除软件包的方法。

此外,本实验还将指导你管理 DNF 软件仓库,包括添加、启用和禁用仓库。最后,你将学习如何查看和理解 DNF 事务历史,从而全面了解软件包管理操作。

注意: 此实验需要网络连接才能下载软件包和访问仓库。它仅限于 LabEx Pro 用户。

注册 Red Hat 支持系统

在本步骤中,你将学习如何使用 subscription-manager 命令注册你的系统以获取 Red Hat 支持。虽然在这个模拟环境中无法获得完整的 Red Hat 订阅,但理解 subscription-manager 命令对于管理 Red Hat Enterprise Linux 系统上的软件至关重要。该命令允许你将系统注册到 Red Hat,附加订阅,并访问 Red Hat 的内容分发网络以获取软件包和更新。

首先,让我们尝试使用占位符用户名注册系统。这将演示该命令的用法,即使实际注册需要有效的 Red Hat 凭据。

sudo subscription-manager register --username labex

系统会提示你输入密码。由于这是一个模拟环境,你可以输入任何密码,或者如果系统允许,只需按回车键即可。该命令可能无法连接到 Red Hat 的订阅服务,这在该实验环境中是预期的。重要的是要理解该命令的语法及其预期用途。

Registering to: subscription.rhsm.redhat.com:443/subscription
Password:
Invalid username or password. To create a login, please visit https://www.redhat.com/wapps/ugc/register.html (HTTP error code 401: Unauthorized)

最后,让我们看看如何查看已消耗的订阅。此命令显示当前附加到系统的订阅。

sudo subscription-manager list --consumed

由于系统未注册,你将看到一条消息,指示没有已消耗的订阅。

No consumed subscription pools were found.

接下来,让我们探索如何通常列出你的 Red Hat 帐户的可用订阅。此命令将显示与你的 Red Hat 帐户相关的各种订阅池。

sudo subscription-manager list --available

由于系统尚未注册,你将看到一条错误消息,指示首先需要注册。

This system is not yet registered. Try 'subscription-manager register --help' for more information.

这个练习演示了 subscription-manager 命令在注册和查看订阅信息方面的基本用法。虽然在这个模拟环境中功能有限,但这些命令对于管理 RHEL 系统上的软件访问至关重要。

探索 RPM 包信息

在本步骤中,你将学习如何使用 rpm 命令来调查软件包。RPM (Red Hat Package Manager) 是 Red Hat Enterprise Linux 使用的核心软件包管理系统。虽然 dnf (你将在后续步骤中探索) 是一个用于从仓库管理软件包的高级工具,rpm 允许你查询、验证、安装和卸载单个 .rpm 文件。

首先,让我们列出系统上所有已安装的 RPM 软件包。这可能会生成一个很长的列表,因此我们将输出管道化到 head 命令,只查看开头部分。

rpm -qa | head

你将看到软件包名称、版本和架构的列表。例如:

libgcc-11.4.1-3.el9.x86_64
crypto-policies-20240202-1.git283706d.el9.noarch
tzdata-2024a-1.el9.noarch
subscription-manager-rhsm-certificates-20220623-1.el9.noarch
redhat-release-9.4-0.4.el9.x86_64
setup-2.13.7-10.el9.noarch
filesystem-3.16-2.el9.x86_64
basesystem-11-13.el9.noarch
pcre2-syntax-10.40-5.el9.noarch
ncurses-base-6.2-10.20210508.el9.noarch

接下来,让我们找出哪个软件包提供了特定文件。我们将使用 /etc/yum.repos.d 作为示例,这是一个包含 DNF 仓库配置文件的目录。

rpm -qf /etc/yum.repos.d

输出将显示拥有该目录的软件包。

redhat-release-9.4-0.4.el9.x86_64

现在,让我们获取已安装软件包的详细信息。我们将使用 dnf 软件包本身作为示例。

rpm -qi dnf

此命令提供大量信息,包括软件包名称、版本、发行版、架构、大小、摘要、URL、许可证和详细说明。

(此处省略输出)

你还可以列出软件包安装的所有文件。这对于了解软件包在系统上放置了什么内容很有用。

rpm -ql dnf | head -n 10

这将显示 dnf 软件包安装的前 10 个文件。

(此处省略输出)

要查看软件包安装的配置文件,请使用 -qc 选项。让我们检查 openssh-clients 软件包。

rpm -qc openssh-clients

这将列出与 SSH 客户端相关的配置文件。

(此处省略输出)

最后,要查看软件包的更改日志信息,请使用 --changelog。这可以提供有关软件包更新和修复历史的见解。让我们查看 audit 软件包。

rpm -q --changelog audit | head -n 5

如果软件包未安装,你将看到一条错误消息:

package audit is not installed

你可以尝试使用已安装的软件包。例如,使用 setup 软件包:

rpm -q --changelog setup | head -n 5

这些 rpm 命令是了解系统上安装的软件包及其包含的文件的强大工具。

使用 DNF 安装和删除软件包

在本步骤中,你将学习如何使用 dnf (Dandified YUM) 来管理软件包。dnf 是 Red Hat Enterprise Linux 9 中默认的软件包管理器,用于安装、更新和删除软件包,以及管理软件仓库。它会自动处理依赖关系,使得软件管理比仅使用 rpm 更容易。

首先,让我们列出所有名称中包含 "http" 的可用和已安装软件包。这将让你了解哪些软件包与 HTTP 服务相关。

sudo dnf list 'http*'

你将看到一个软件包列表,指示它们是否已安装或可供安装。

(此处省略输出)

现在,让我们搜索名称、摘要或描述中包含 "web server" 的软件包。search all 选项用于更广泛的搜索。

sudo dnf search all 'web server'

此命令将返回与搜索条件匹配的软件包列表。

(此处省略输出)

让我们获取 httpd 软件包(Apache HTTP 服务器)的详细信息。

sudo dnf info httpd

这将显示该软件包的全面详细信息,包括其大小、许可证和描述。

(此处省略输出)

现在,让我们安装 httpd 软件包。你需要 sudo 权限才能执行此操作。

sudo dnf install httpd -y

-y 标志会自动回答“是”以响应任何提示,这对于脚本很有用,但在生产环境中请谨慎使用。

(此处省略输出)

你可以通过查询 rpm 来验证 httpd 是否已安装:

rpm -q httpd
(此处省略输出)

现在,让我们删除 httpd 软件包。

sudo dnf remove httpd -y

这将删除 httpd 软件包以及任何不再被其他已安装软件包需要的依赖项。

(此处省略输出)

你可以确认其已删除:

rpm -q httpd
(此处省略输出)

这演示了 dnf 命令在安装和删除软件包方面的基本用法。

管理 DNF 软件仓库

在本步骤中,你将学习如何管理 DNF 软件仓库。仓库是存储软件包的位置,dnf 从中检索软件包。了解如何列出、启用、禁用和添加仓库对于控制系统上可用的软件至关重要。

首先,让我们列出所有已配置的 DNF 仓库及其状态(启用或禁用)。

sudo dnf repolist all

你将看到一个仓库 ID、名称及其当前状态的列表。

(此处省略输出)

dnf config-manager 命令是管理仓库配置的强大工具。你可以使用它来启用或禁用仓库。例如,让我们尝试启用一个假设的调试仓库。虽然这个特定的仓库可能在这个实验环境中不存在或不可访问,但该命令演示了语法。

sudo dnf config-manager --enable rhel-9-server-debug-rpms

你将看到关于订阅管理的消息和一个指示该仓库未找到的错误,这在当前环境中是预期的。

(此处省略输出)

现在,让我们尝试禁用一个仓库。我们将使用 rhel-9-for-x86_64-appstream-rpms 作为示例。注意:这个特定的仓库名称在这个 UBI 环境中不存在,但该命令演示了语法。

sudo dnf config-manager --disable rhel-9-for-x86_64-appstream-rpms

你将看到关于订阅管理的消息和一个指示该仓库在这个环境中不存在的错误。

(此处省略输出)

让我们验证这个仓库名称在当前系统中是否存在:

sudo dnf repolist all | grep rhel-9-for-x86_64-appstream-rpms

正如预期的那样,由于这个仓库在这个 UBI 环境中不存在,因此不会有任何输出。

(无输出)

让我们尝试相同的启用命令来确认仓库不存在:

sudo dnf config-manager --enable rhel-9-for-x86_64-appstream-rpms

再次,你将看到相同的错误消息:

(此处省略输出)

dnf config-manager --add-repo 命令也可以用于通过指定 URL 添加新的仓库。为了演示,我们将尝试添加一个通用的 EPEL (Extra Packages for Enterprise Linux) 仓库 URL。虽然这可能无法完全配置仓库(因为它通常需要 GPG 密钥和特定的 .repo 文件),但它展示了该命令的功能。

sudo dnf config-manager --add-repo="https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/"

你将看到输出,指示已创建新的 .repo 文件。

(此处省略输出)

你可以检查 /etc/yum.repos.d/ 中新创建的 .repo 文件。该文件名称将从 URL 派生。

ls /etc/yum.repos.d/

你应该看到一个类似于 dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo 的文件,以及现有的仓库文件。

(此处省略输出)

最后,让我们删除我们刚刚添加的仓库配置文件以进行清理。

sudo rm /etc/yum.repos.d/dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo

本步骤向你展示了如何列出、启用、禁用和添加 DNF 仓库,这些技能对于管理 RHEL 上的软件源至关重要。

查看 DNF 事务历史记录

在本步骤中,你将学习如何查看 DNF 操作的事务历史记录。dnf 会详细记录所有软件包的安装、删除和更新操作。此历史记录对于故障排除、审计,甚至在必要时恢复更改至关重要。

首先,让我们查看系统上发生的所有 DNF 事务的摘要。

sudo dnf history

你将看到一个表格,列出每个事务的 ID、使用的命令行、日期和时间、执行的操作以及更改的软件包数量。

(此处省略输出)

“ID”列尤其重要,因为它允许你参考特定事务。例如,如果要查看特定事务的详细信息,可以使用 dnf history info <ID>。让我们查看最后一次事务的详细信息(这应该是在上一步中删除的 httpd)。你可以从 dnf history 输出中找到 ID。在上面的示例中,它是 2

sudo dnf history info 2

此命令提供了所选事务的全面分解,包括已删除的软件包、它们的版本以及执行操作的原因。

(此处省略输出)

DNF 历史记录的一个强大功能是能够撤销或重做事务。例如,要撤销 httpd 的删除操作,可以使用 dnf history undo <ID>。让我们撤销 httpd 的删除事务(使用你 dnf history 输出中的 ID,例如 2)。

sudo dnf history undo 2 -y

此命令将重新安装 httpd 软件包及其在该特定事务中已删除的依赖项。

(此处省略输出)

你可以再次验证 httpd 是否已安装:

rpm -q httpd
(此处省略输出)

最后,让我们再次删除 httpd,以便为未来的实验保留一个干净的系统状态。

sudo dnf remove httpd -y
(此处省略输出)

本步骤演示了如何使用 dnf history 查看、检查甚至恢复 DNF 事务,为系统管理提供了强大的功能。

总结

在本实验中,我们学习了使用 DNF 管理 Red Hat Enterprise Linux 上软件包的必要技能。我们首先了解了 subscription-manager 命令,该命令对于将系统注册到 Red Hat 并访问其内容分发网络至关重要,尽管在模拟环境中无法完成完整的注册。

随后,我们探索了如何查询 RPM 软件包信息,使用 DNF 安装和删除软件,管理 DNF 软件仓库,以及查看 DNF 事务历史记录。这些步骤全面概述了 DNF 在高效软件管理方面的功能。