Установка программного обеспечения в Red Hat Enterprise Linux

LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы получите практический опыт управления пакетами программного обеспечения в системах Red Hat Enterprise Linux (RHEL) с помощью пакетного менеджера DNF. Вы начнете с изучения команды subscription-manager для регистрации в службе поддержки Red Hat, даже в условиях симулированной среды. Затем вы узнаете, как получать и интерпретировать информацию о пакетах RPM, после чего освоите установку и удаление программ с помощью DNF.

Кроме того, руководство познакомит вас с управлением программными репозиториями DNF, включая их добавление, включение и отключение. В завершение вы научитесь просматривать и анализировать историю транзакций DNF, получив полное представление об операциях управления пакетами.

Примечание: Для этой лабораторной работы требуется сетевое подключение для загрузки пакетов и доступа к репозиториям. Она доступна только пользователям с подпиской LabEx Pro.

Регистрация системы для получения поддержки Red Hat

На этом шаге вы узнаете, как зарегистрировать вашу систему для получения поддержки Red Hat с помощью команды subscription-manager. Хотя полноценная подписка Red Hat недоступна в этой симулированной среде, понимание команды subscription-manager критически важно для администрирования программного обеспечения в системах Red Hat Enterprise Linux. Эта команда позволяет зарегистрировать систему в Red Hat, подключить подписки и получить доступ к сети доставки контента Red Hat для загрузки пакетов и обновлений.

Сначала попытаемся зарегистрировать систему, используя имя пользователя-заглушку. Это продемонстрирует синтаксис команды, хотя для реальной регистрации требуются действительные учетные данные Red Hat.

sudo subscription-manager register --username labex --password labex 2>&1 | tee ~/project/subscription-register.txt

В этой лабораторной работе используются фиктивные учетные данные, чтобы команда могла выполняться в неинтерактивном режиме. Аутентификация завершится ошибкой, что ожидаемо для данной среды, а вывод будет сохранен в файл ~/project/subscription-register.txt для ознакомления.

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)

Наконец, давайте посмотрим, какие репозитории были бы доступны через подписки Red Hat в зарегистрированной системе.

sudo subscription-manager repos --list 2>&1 | tee ~/project/subscription-repos.txt

Поскольку система не зарегистрирована, вы увидите сообщение о том, что репозитории по подписке недоступны.

This system has no repositories available through subscriptions.

Далее проверим текущий статус подписки для этой системы. Это практический способ подтвердить, что система по-прежнему не зарегистрирована, прежде чем вы начнете работу с контентом подписки Red Hat.

sudo subscription-manager status 2>&1 | tee ~/project/subscription-status.txt

Так как система не зарегистрирована, команда сообщит либо Not registered (Не зарегистрирована), либо Unknown (Неизвестно), в зависимости от версии subscription-manager. В этой симулированной среде статус Unknown также указывает на то, что у системы нет активной подписки после неудавшейся попытки регистрации.

+-------------------------------------------+
   System Status Details
+-------------------------------------------+
Overall Status: Unknown
System Purpose Status: Unknown

Это упражнение демонстрирует базовое использование subscription-manager для регистрации и проверки статуса. Несмотря на ограниченную функциональность в симулированной среде, эти команды имеют фундаментальное значение для понимания доступа к программному обеспечению в RHEL.

Изучение информации о пакетах RPM

На этом шаге вы научитесь использовать команду rpm для исследования программных пакетов. RPM (Red Hat Package Manager) — это основная система управления пакетами, используемая в Red Hat Enterprise Linux. Хотя dnf (с которым вы познакомитесь позже) является инструментом более высокого уровня для управления пакетами из репозиториев, rpm позволяет запрашивать, проверять, устанавливать и удалять отдельные файлы .rpm.

Сначала выведем список всех установленных RPM-пакетов в вашей системе. Это может сформировать очень длинный список, поэтому мы перенаправим вывод в утилиту head, чтобы увидеть только его начало.

rpm -qa | head > ~/project/rpm-installed.txt
cat ~/project/rpm-installed.txt

Вы увидите список имен пакетов, версий и архитектур. Например:

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.noarch
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.

DNF_PACKAGE=$(rpm -qf /usr/bin/dnf)
rpm -qi "$DNF_PACKAGE" > ~/project/dnf-package-info.txt
cat ~/project/dnf-package-info.txt

Эти команды сначала определяют, какому RPM принадлежит файл /usr/bin/dnf, а затем выводят подробные метаданные пакета, включая версию, релиз, архитектуру, лицензию и краткое описание.

Name        : dnf
Version     : 4.14.0
Release     : 9.el9
Architecture: noarch
Install Date: Thu Jul 18 15:50:10 2024
Group       : Unspecified
Size        : 2425281
License     : GPLv2+
Signature   : RSA/SHA256, Fri Nov 10 10:14:09 2023, Key ID 199e2f91fd431d51
Source RPM  : dnf-4.14.0-9.el9.src.rpm
Build Date  : Thu Oct 26 05:20:14 2023
Build Host  : x86-64-01.build.eng.rdu2.redhat.com
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
URL         : https://github.com/rpm-software-management/dnf
Summary     : Package manager
Description :
Utility that allows users to manage packages on their systems.
It supports RPMs, modules and comps groups & environments.

Вы также можете вывести список всех файлов, установленных пакетом. Это бывает полезно для понимания того, какие файлы пакет добавляет в систему.

rpm -ql dnf | head -n 10

Это покажет первые 10 файлов, установленных пакетом dnf.

/usr/bin/dnf
/usr/lib/systemd/system/dnf-makecache.service
/usr/lib/systemd/system/dnf-makecache.timer
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/dnf
/usr/share/locale/ar/LC_MESSAGES/dnf.mo
/usr/share/locale/bg/LC_MESSAGES/dnf.mo
/usr/share/locale/bn/LC_MESSAGES/dnf.mo
/usr/share/locale/bn_IN/LC_MESSAGES/dnf.mo

Чтобы увидеть только файлы конфигурации, установленные пакетом, используйте ключ -qc. Проверим пакет openssh-clients.

rpm -qc openssh-clients

Будут выведены файлы конфигурации, связанные с SSH-клиентами.

/etc/ssh/ssh_config
/etc/ssh/ssh_config.d/50-redhat.conf

Наконец, для просмотра журнала изменений (changelog) пакета используется ключ --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*'

Вы увидите список пакетов с указанием того, установлены они или доступны для установки.

Last metadata expiration check: 0:00:00 ago on Mon Apr 22 08:00:00 2024.
Available Packages
http-parser.i686               2.9.4-6.el9    rhel-9-for-x86_64-appstream-rpms
http-parser.x86_64             2.9.4-6.el9    rhel-9-for-x86_64-appstream-rpms
httpcomponents-client.noarch   4.5.13-2.el9   rhel-9-for-x86_64-appstream-rpms
httpcomponents-core.noarch     4.4.13-6.el9   rhel-9-for-x86_64-appstream-rpms
httpd.x86_64                   2.4.51-5.el9   rhel-9-for-x86_64-appstream-rpms
httpd-devel.x86_64             2.4.51-5.el9   rhel-9-for-x86_64-appstream-rpms
httpd-filesystem.noarch        2.4.51-5.el9   rhel-9-for-x86_64-appstream-rpms
httpd-manual.noarch            2.4.51-5.el9   rhel-9-for-x86_64-appstream-rpms
httpd-tools.x86_64             2.4.51-5.el9   rhel-9-for-x86_64-appstream-rpms

Теперь найдем пакеты, содержащие "web server" в своем названии, кратком описании или полном описании. Параметр search all полезен для более широкого поиска.

sudo dnf search all 'web server'

Команда вернет список пакетов, соответствующих поисковым запросам.

Last metadata expiration check: 0:00:00 ago on Mon Apr 22 08:00:00 2024.
================== Summary & Description Matched: web server ===================
nginx.x86_64 : A high performance web server and reverse proxy server
pcp-pmda-weblog.x86_64 : Performance Co-Pilot (PCP) metrics from web server logs
========================= Summary Matched: web server ==========================
libcurl.x86_64 : A library for getting files from web servers
libcurl.i686 : A library for getting files from web servers
======================= Description Matched: web server ========================
freeradius.x86_64 : High-performance and highly configurable free RADIUS server
git-instaweb.noarch : Repository browser in gitweb
http-parser.i686 : HTTP request/response parser for C
http-parser.x86_64 : HTTP request/response parser for C
httpd.x86_64 : Apache HTTP Server
mod_auth_openidc.x86_64 : OpenID Connect auth module for Apache HTTP Server
mod_jk.x86_64 : Tomcat mod_jk connector for Apache
mod_security.x86_64 : Security module for the Apache HTTP Server
varnish.i686 : High-performance HTTP accelerator
varnish.x86_64 : High-performance HTTP accelerator

Получим подробную информацию о пакете httpd, который представляет собой веб-сервер Apache HTTP Server.

sudo dnf info httpd

Будут выведены исчерпывающие сведения о пакете, включая его размер, лицензию и описание.

Last metadata expiration check: 0:00:00 ago on Mon Apr 22 08:00:00 2024.
Available Packages
Name         : httpd
Version      : 2.4.51
Release      : 5.el9
Architecture : x86_64
Size         : 1.5 M
Source       : httpd-2.4.51-5.el9.src.rpm
Repository   : rhel-9-for-x86_64-appstream-rpms
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.

Теперь установим пакет httpd. Для этой операции вам понадобятся права sudo.

sudo dnf install httpd -y | tee ~/project/httpd-install.txt

Флаг -y автоматически отвечает "yes" на любые запросы подтверждения, что удобно для скриптов, но требует осторожности в производственных средах.

Last metadata expiration check: 0:00:00 ago on Mon Apr 22 08:00:00 2024.
Dependencies resolved.
================================================================================
 Package                Architecture  Version           Repository         Size
================================================================================
Installing:
 httpd                  x86_64        2.4.51-5.el9      rhel-9-for-x86_64-appstream-rpms
                                                                          1.5 M
Installing dependencies:
 apr                    x86_64        1.7.0-11.el9      rhel-9-for-x86_64-appstream-rpms
                                                                          126 k
 apr-util               x86_64        1.6.1-20.el9      rhel-9-for-x86_64-appstream-rpms
                                                                          106 k
 apr-util-bdb           x86_64        1.6.1-20.el9      rhel-9-for-x86_64-appstream-rpms
                                                                           13 k
 apr-util-openssl       x86_64        1.6.1-20.el9      rhel-9-for-x86_64-appstream-rpms
                                                                           15 k
 httpd-filesystem       noarch        2.4.51-5.el9      rhel-9-for-x86_64-appstream-rpms
                                                                           14 k
 httpd-tools            x86_64        2.4.51-5.el9      rhel-9-for-x86_64-appstream-rpms
                                                                          100 k
 mailcap                noarch        2.1.49-5.el9      rhel-9-for-x86_64-baseos-rpms
                                                                           36 k
 mod_http2              x86_64        1.15.7-5.el9      rhel-9-for-x86_64-appstream-rpms
                                                                          150 k
 redhat-logos-httpd     noarch        90.4-1.el9        rhel-9-for-x86_64-appstream-rpms
                                                                           20 k

Transaction Summary
================================================================================
Install  10 Packages

Total download size: 2.1 M
Installed size: 6.9 M
Downloading Packages:
... (downloading package details omitted) ...
Running transaction
... (installation progress omitted) ...

Installed:
  apr-1.7.0-11.el9.x86_64
  apr-util-1.6.1-20.el9.x86_64
  apr-util-bdb-1.6.1-20.el9.x86_64
  apr-util-openssl-1.6.1-20.el9.x86_64
  httpd-2.4.51-5.el9.x86_64
  httpd-filesystem-2.4.51-5.el9.noarch
  httpd-tools-2.4.51-5.el9.x86_64
  mailcap-2.1.49-5.el9.noarch
  mod_http2-1.15.7-5.el9.x86_64
  redhat-logos-httpd-90.4-1.el9.noarch

Complete!

Вы можете убедиться, что httpd установлен, запросив его через rpm:

rpm -q httpd
httpd-2.4.51-5.el9.x86_64

Теперь удалим пакет httpd.

sudo dnf remove httpd -y | tee ~/project/httpd-remove.txt

Это удалит пакет httpd, а также все зависимости, которые больше не нужны другим установленным пакетам.

Dependencies resolved.
================================================================================
 Package                Architecture  Version           Repository         Size
================================================================================
Removing:
 httpd                  x86_64        2.4.51-5.el9      @appstream        4.7 M
Removing dependent packages:
 apr-util-bdb           x86_64        1.6.1-20.el9      @appstream         13 k
 apr-util-openssl       x86_64        1.6.1-20.el9      @appstream         15 k
 httpd-filesystem       noarch        2.4.51-5.el9      @appstream         14 k
 mod_http2              x86_64        1.15.7-5.el9      @appstream        150 k
 redhat-logos-httpd     noarch        90.4-1.el9        @appstream         20 k

Transaction Summary
================================================================================
Remove  6 Packages

Freed space: 4.9 M
... (transaction progress omitted) ...

Removed:
  apr-util-bdb-1.6.1-20.el9.x86_64
  apr-util-openssl-1.6.1-20.el9.x86_64
  httpd-2.4.51-5.el9.x86_64
  httpd-filesystem-2.4.51-5.el9.noarch
  mod_http2-1.15.7-5.el9.x86_64
  redhat-logos-httpd-90.4-1.el9.noarch

Complete!

Вы можете подтвердить удаление:

rpm -q httpd
package httpd is not installed

Это демонстрирует базовые команды dnf для установки и удаления программных пакетов.

Управление программными репозиториями DNF

На этом шаге вы научитесь управлять программными репозиториями DNF. Репозитории — это хранилища, где находятся пакеты ПО, откуда dnf загружает их. Понимание того, как выводить список, включать, отключать и добавлять репозитории, критически важно для контроля над программным обеспечением, доступным в вашей системе.

Сначала выведем список всех настроенных репозиториев DNF и их статусы (включен или отключен).

sudo dnf repolist all > ~/project/dnf-repolist.txt
cat ~/project/dnf-repolist.txt

Вы увидите список идентификаторов репозиториев, их названий и текущих статусов. Точные названия репозиториев зависят от образа, используемого в лабораторной работе.

repo id                                             repo name           status
rhui-rhel-10-for-x86_64-appstream-rhui-rpms         Red Hat Enterprise  enabled
rhui-rhel-10-for-x86_64-baseos-rhui-rpms            Red Hat Enterprise  enabled
rhui-rhel-10-for-x86_64-appstream-rhui-debug-rpms   Red Hat Enterprise  disabled

Команда dnf config-manager — это мощный инструмент для управления конфигурациями репозиториев. С ее помощью можно включать или отключать репозитории. Например, попытаемся включить гипотетический отладочный репозиторий (debug). Хотя этот конкретный репозиторий может отсутствовать или быть недоступным в данной среде, команда наглядно демонстрирует синтаксис.

sudo dnf config-manager --enable rhel-9-server-debug-rpms 2>&1 | tee ~/project/dnf-enable-debug.txt

Вы увидите сообщения об управлении подписками и ошибку о том, что репозиторий не найден, что является ожидаемым в этой среде.

Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Error: No matching repo to modify: rhel-9-server-debug-rpms.

Теперь попробуем отключить репозиторий. В качестве примера возьмем rhel-9-for-x86_64-appstream-rpms. Примечание: Данное имя репозитория не существует в текущем образе лабы, но команда демонстрирует синтаксис.

sudo dnf config-manager --disable rhel-9-for-x86_64-appstream-rpms 2>&1 | tee ~/project/dnf-disable-appstream.txt

Вы увидите сообщения системы подписок и ошибку, указывающую на то, что репозиторий не существует в данной среде.

Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Error: No matching repo to modify: rhel-9-for-x86_64-appstream-rpms.

Проверим, что этого репозитория действительно нет в текущей системе:

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

Как и ожидалось, вывод будет пустым, поскольку этого репозитория не существует в образе лабораторной работы.

(no output)

Попробуем выполнить ту же команду включения, чтобы подтвердить отсутствие репозитория:

sudo dnf config-manager --enable rhel-9-for-x86_64-appstream-rpms 2>&1 | tee ~/project/dnf-enable-appstream.txt

Вы снова увидите то же сообщение об ошибке:

Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Error: No matching repo to modify: rhel-9-for-x86_64-appstream-rpms.

Команду dnf config-manager --add-repo можно использовать для добавления новых репозиториев путем указания URL-адреса. В демонстрационных целях мы попытаемся добавить URL популярного репозитория EPEL (Extra Packages for Enterprise Linux). Хотя это может не полностью настроить репозиторий (так как часто требуются GPG-ключ и специальный файл .repo), это наглядно показывает возможности команды.

sudo dnf config-manager --add-repo="https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/" 2>&1 | tee ~/project/dnf-add-repo.txt

Появится вывод, указывающий на создание нового файла .repo.

Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Adding repo from: https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/

Вы можете проверить только что созданный файл .repo в директории /etc/yum.repos.d/. Имя файла будет сформировано на основе URL.

ls /etc/yum.repos.d/

Вы должны увидеть файл вроде dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo наряду с существующими файлами репозиториев.

dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo  redhat.repo  ubi.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 | tee ~/project/dnf-history.txt

Вы увидите таблицу с перечислением каждой транзакции: ее ID, использованная командная строка, дата и время, выполненное действие (действия) и количество измененных пакетов.

ID     | Command line              | Date and time    | Action(s)      | Altered
--------------------------------------------------------------------------------
     3 | install httpd             | 2024-04-22 08:00 | Install        |   10
     2 | remove httpd              | 2024-04-22 08:01 | Remove         |    6
     1 |                           | 2024-04-22 07:50 | Install        |  767 EE

Колонка ID особенно важна, так как она позволяет ссылаться на конкретные транзакции. В рамках этой работы вы можете извлечь ID транзакции удаления httpd из вывода истории и использовать его в следующих командах.

HTTPD_REMOVE_ID=$(sudo dnf history | awk '/remove httpd/ && $1 ~ /^[0-9]+$/ {print $1; exit}')
echo "$HTTPD_REMOVE_ID"
sudo dnf history info "$HTTPD_REMOVE_ID" | tee ~/project/dnf-history-info.txt

Эта команда выдает исчерпывающую информацию о выбранной транзакции, включая удаленные пакеты, их версии и причину выполнения действия.

Transaction ID : 2
Begin time     : Mon Apr 22 08:01:00 2024
Begin rpmdb    : 777:a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f3
End time       : Mon Apr 22 08:01:05 2024 (5 seconds)
End rpmdb      : 771:a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f3
User           : labex <labex>
Return Code    : Success
Command Line   : dnf remove httpd -y
Packages Altered:
    Removed apr-util-bdb-1.6.1-20.el9.x86_64
    Removed apr-util-openssl-1.6.1-20.el9.x86_64
    Removed httpd-2.4.51-5.el9.x86_64
    Removed httpd-filesystem-2.4.51-5.el9.noarch
    Removed mod_http2-1.15.7-5.el9.x86_64
    Removed redhat-logos-httpd-90.4-1.el9.noarch

Одной из самых мощных функций истории DNF является возможность отмены (undo) или повтора (redo) транзакций. Отменим транзакцию удаления httpd, используя сохраненное ранее значение HTTPD_REMOVE_ID.

sudo dnf history undo "$HTTPD_REMOVE_ID" -y | tee ~/project/dnf-history-undo.txt

Эта команда выполнит переустановку пакета httpd и его зависимостей, которые были удалены в ходе той конкретной транзакции.

Last metadata expiration check: 0:00:00 ago on Mon Apr 22 08:00:00 2024.
Undoing transaction 2, from Mon Apr 22 08:01:00 2024
    Removed apr-util-bdb-1.6.1-20.el9.x86_64
    Removed apr-util-openssl-1.6.1-20.el9.x86_64
    Removed httpd-2.4.51-5.el9.x86_64
    Removed httpd-filesystem-2.4.51-5.el9.noarch
    Removed mod_http2-1.15.7-5.el9.x86_64
    Removed redhat-logos-httpd-90.4-1.el9.noarch
Dependencies resolved.
================================================================================
 Package                Architecture  Version           Repository         Size
================================================================================
Installing:
 httpd                  x86_64        2.4.51-5.el9      ubi-9-appstream-rpms  1.5 M
Installing dependencies:
 apr                    x86_64        1.7.0-11.el9      ubi-9-appstream-rpms  126 k
 apr-util               x86_64        1.6.1-20.el9      ubi-9-appstream-rpms  106 k
 apr-util-bdb           x86_64        1.6.1-20.el9      ubi-9-appstream-rpms   13 k
 apr-util-openssl       x86_64        1.6.1-20.el9      ubi-9-appstream-rpms   15 k
 httpd-filesystem       noarch        2.4.51-5.el9      ubi-9-appstream-rpms   14 k
 httpd-tools            x86_64        2.4.51-5.el9      ubi-9-appstream-rpms  100 k
 mailcap                noarch        2.1.49-5.el9      ubi-9-baseos-rpms      36 k
 mod_http2              x86_64        1.15.7-5.el9      ubi-9-appstream-rpms  150 k
 redhat-logos-httpd     noarch        90.4-1.el9        ubi-9-appstream-rpms   20 k

Transaction Summary
================================================================================
Install  10 Packages

Total download size: 2.1 M
Installed size: 6.9 M
... (installation progress omitted) ...
Complete!

Вы можете убедиться, что httpd снова установлен:

rpm -q httpd
httpd-2.4.51-5.el9.x86_64

Наконец, снова удалим httpd, чтобы оставить систему в чистом состоянии для будущих лабораторных работ.

sudo dnf remove httpd -y | tee ~/project/dnf-history-final-remove.txt
... (output omitted) ...
Complete!

Этот шаг продемонстрировал, как использовать команду dnf history для просмотра, анализа и даже отката транзакций DNF, предоставляя мощные возможности для администрирования систем.

Резюме

В этой лабораторной работе мы освоили ключевые навыки управления пакетами ПО в Red Hat Enterprise Linux с помощью DNF. Мы начали с изучения команды subscription-manager, необходимой для регистрации систем в Red Hat и доступа к их сети доставки контента, хотя полноценная регистрация была недоступна в симулированной среде.

Затем мы изучили запросы информации о пакетах RPM, установку и удаление ПО с помощью DNF, управление репозиториями DNF и просмотр истории транзакций DNF. Эти шаги предоставили полное представление о возможностях DNF для эффективного администрирования программного обеспечения.