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

Red Hat Enterprise 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, привязать подписки и получить доступ к сети доставки контента (CDN) 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

Так как система еще не зарегистрирована, команда сообщит об этом статусе напрямую.

+-------------------------------------------+
   System Status Details
+-------------------------------------------+
Overall Status: Not registered

Это упражнение демонстрирует базовое использование 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

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

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 — это мощный инструмент для управления конфигурациями репозиториев. Вы можете использовать его для включения или отключения репозиториев. Например, попробуем включить гипотетический отладочный репозиторий. Хотя этот конкретный репозиторий может не существовать или быть недоступным в этой лабораторной среде, команда демонстрирует синтаксис.

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 для эффективного управления программным обеспечением.