Instalar Software no Red Hat Enterprise Linux

Red Hat Enterprise LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você ganhará experiência prática no gerenciamento de pacotes de software em sistemas Red Hat Enterprise Linux (RHEL) usando o DNF. Você começará entendendo o comando subscription-manager para registro de suporte da Red Hat, mesmo em um ambiente simulado. Posteriormente, você explorará como recuperar e interpretar informações de pacotes RPM e, em seguida, dominará a instalação e remoção de pacotes de software usando o DNF.

Além disso, este laboratório o guiará pelo gerenciamento de repositórios de software DNF, incluindo como adicioná-los, habilitá-los e desabilitá-los. Por fim, você aprenderá a visualizar e entender o histórico de transações do DNF, obtendo uma visão abrangente das operações de gerenciamento de pacotes.

Nota: Este laboratório requer conectividade de rede para baixar pacotes e acessar repositórios. Ele está disponível apenas para usuários do LabEx Pro.

Registrar seu sistema para suporte Red Hat

Nesta etapa, você aprenderá como registrar seu sistema para suporte da Red Hat usando o comando subscription-manager. Embora uma assinatura completa da Red Hat não esteja disponível neste ambiente simulado, entender o comando subscription-manager é crucial para gerenciar software em sistemas Red Hat Enterprise Linux. Este comando permite que você registre seu sistema na Red Hat, anexe assinaturas e acesse a rede de entrega de conteúdo da Red Hat para pacotes de software e atualizações.

Primeiro, vamos tentar registrar o sistema usando um nome de usuário de exemplo. Isso demonstrará o uso do comando, embora o registro real exija credenciais válidas da Red Hat.

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

Este laboratório usa credenciais de exemplo para que o comando possa ser executado de forma não interativa. O comando falhará na autenticação, o que é esperado neste ambiente, e a saída será salva em ~/project/subscription-register.txt para revisão.

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)

Por fim, vamos ver quais repositórios estariam disponíveis por meio de assinaturas Red Hat em um sistema registrado.

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

Como o sistema não está registrado, você verá uma mensagem indicando que não há repositórios baseados em assinatura disponíveis.

This system has no repositories available through subscriptions.

Em seguida, vamos verificar o status atual da assinatura deste sistema. Esta é uma maneira prática de confirmar que o sistema ainda não está registrado antes de trabalhar com o conteúdo de assinatura da Red Hat.

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

Como o sistema ainda não está registrado, o comando informará esse status diretamente.

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

Este exercício demonstra o uso básico do subscription-manager para registro e verificação de status. Embora a funcionalidade completa seja limitada neste ambiente simulado, esses comandos são fundamentais para entender o acesso a software em sistemas RHEL.

Explorar informações de pacotes RPM

Nesta etapa, você aprenderá como usar o comando rpm para investigar pacotes de software. O RPM (Red Hat Package Manager) é o sistema central de gerenciamento de pacotes usado pelo Red Hat Enterprise Linux. Embora o dnf (que você explorará mais tarde) seja uma ferramenta de nível superior para gerenciar pacotes de repositórios, o rpm permite consultar, verificar, instalar e desinstalar arquivos .rpm individuais.

Primeiro, vamos listar todos os pacotes RPM instalados no seu sistema. Isso pode gerar uma lista muito longa, então vamos redirecionar a saída para o head para ver apenas o início.

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

Você verá uma lista de nomes de pacotes, versões e arquiteturas. Por exemplo:

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

Em seguida, vamos descobrir qual pacote fornece um arquivo específico. Usaremos /etc/yum.repos.d como exemplo, que é um diretório contendo arquivos de configuração de repositório DNF.

rpm -qf /etc/yum.repos.d

A saída mostrará o pacote que possui este diretório.

redhat-release-9.4-0.4.el9.x86_64

Agora, vamos obter informações detalhadas sobre o pacote que fornece o comando dnf.

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

Esses comandos primeiro identificam qual RPM possui o /usr/bin/dnf e, em seguida, mostram metadados detalhados do pacote, incluindo versão, release, arquitetura, licença e resumo.

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.

Você também pode listar todos os arquivos instalados por um pacote. Isso pode ser útil para entender o que um pacote coloca no seu sistema.

rpm -ql dnf | head -n 10

Isso mostrará os primeiros 10 arquivos instalados pelo pacote 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

Para ver apenas os arquivos de configuração instalados por um pacote, use a opção -qc. Vamos verificar o pacote openssh-clients.

rpm -qc openssh-clients

Isso listará os arquivos de configuração relacionados aos clientes SSH.

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

Por fim, para visualizar as informações do log de alterações de um pacote, use --changelog. Isso pode fornecer insights sobre o histórico de atualizações e correções de um pacote. Vamos dar uma olhada no pacote audit.

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

Se o pacote não estiver instalado, você verá uma mensagem de erro:

package audit is not installed

Você pode tentar com um pacote instalado. Por exemplo, com o pacote setup:

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

Esses comandos rpm são ferramentas poderosas para entender os pacotes instalados no seu sistema e os arquivos que eles contêm.

Instalar e remover pacotes de software com DNF

Nesta etapa, você aprenderá como usar o dnf (Dandified YUM) para gerenciar pacotes de software. O dnf é o gerenciador de pacotes padrão no Red Hat Enterprise Linux 9 e é usado para instalar, atualizar e remover pacotes de software, bem como para gerenciar repositórios de software. Ele lida automaticamente com dependências, tornando o gerenciamento de software muito mais fácil do que apenas com o rpm.

Primeiro, vamos listar todos os pacotes disponíveis e instalados que possuem "http" em seu nome. Isso lhe dará uma ideia de quais pacotes estão relacionados aos serviços HTTP.

sudo dnf list 'http*'

Você verá uma lista de pacotes, indicando se eles estão instalados ou disponíveis para instalação.

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

Agora, vamos pesquisar pacotes que contenham "web server" em seu nome, resumo ou descrição. A opção search all é útil para uma pesquisa mais ampla.

sudo dnf search all 'web server'

Este comando retornará uma lista de pacotes que correspondem aos termos de pesquisa.

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

Vamos obter informações detalhadas sobre o pacote httpd, que é o Apache HTTP Server.

sudo dnf info httpd

Isso exibirá detalhes abrangentes sobre o pacote, incluindo seu tamanho, licença e descrição.

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.

Agora, vamos instalar o pacote httpd. Você precisará de privilégios sudo para esta operação.

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

O sinalizador -y responde automaticamente "yes" a quaisquer prompts, o que é útil para scripts, mas deve ser usado com cautela em ambientes de produção.

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!

Você pode verificar se o httpd está instalado consultando o rpm:

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

Agora, vamos remover o pacote httpd.

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

Isso removerá o pacote httpd e quaisquer dependências que não sejam mais necessárias por outros pacotes instalados.

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!

Você pode confirmar sua remoção:

rpm -q httpd
package httpd is not installed

Isso demonstra os comandos básicos do dnf para instalar e remover pacotes de software.

Gerenciar repositórios de software DNF

Nesta etapa, você aprenderá como gerenciar repositórios de software DNF. Repositórios são locais onde os pacotes de software são armazenados e de onde o dnf os recupera. Entender como listar, habilitar, desabilitar e adicionar repositórios é crucial para controlar qual software está disponível em seu sistema.

Primeiro, vamos listar todos os repositórios DNF configurados e seu status (habilitado ou desabilitado).

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

Você verá uma lista de IDs de repositório, nomes e seu status atual. Os nomes exatos dos repositórios dependem da imagem usada para o laboratório.

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

O comando dnf config-manager é uma ferramenta poderosa para gerenciar configurações de repositório. Você pode usá-lo para habilitar ou desabilitar repositórios. Por exemplo, vamos tentar habilitar um repositório de depuração hipotético. Embora este repositório específico possa não existir ou não estar acessível neste ambiente de laboratório, o comando demonstra a sintaxe.

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

Você verá mensagens sobre gerenciamento de assinatura e um erro indicando que o repositório não foi encontrado, o que é esperado neste ambiente.

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.

Agora, vamos tentar desabilitar um repositório. Usaremos rhel-9-for-x86_64-appstream-rpms como exemplo. Nota: Este nome de repositório específico não existe na imagem atual do laboratório, mas o comando demonstra a sintaxe.

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

Você verá mensagens de gerenciamento de assinatura e um erro indicando que o repositório não existe neste ambiente.

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.

Vamos verificar se este nome de repositório não existe no sistema atual:

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

Como esperado, não haverá saída, pois este repositório não existe na imagem atual do laboratório.

(no output)

Vamos tentar o mesmo comando de habilitação para confirmar que o repositório não existe:

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

Novamente, você verá a mesma mensagem de erro:

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.

O comando dnf config-manager --add-repo também pode ser usado para adicionar novos repositórios especificando uma URL. Para fins de demonstração, tentaremos adicionar uma URL comum de repositório EPEL (Extra Packages for Enterprise Linux). Embora isso possa não configurar totalmente o repositório (pois geralmente requer uma chave GPG e um arquivo .repo específico), mostra a capacidade do comando.

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

Você verá uma saída indicando que um novo arquivo .repo foi criado.

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/

Você pode inspecionar o arquivo .repo recém-criado em /etc/yum.repos.d/. O nome do arquivo será derivado da URL.

ls /etc/yum.repos.d/

Você deve ver um arquivo como dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo junto com os arquivos de repositório existentes.

dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo  redhat.repo  ubi.repo

Por fim, vamos remover o arquivo de configuração do repositório que acabamos de adicionar para limpar.

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

Esta etapa mostrou como listar, habilitar, desabilitar e adicionar repositórios DNF, que são habilidades essenciais para gerenciar fontes de software no RHEL.

Visualizar o histórico de transações do DNF

Nesta etapa, você aprenderá como visualizar o histórico de transações das operações do DNF. O dnf mantém um registro detalhado de todas as instalações, remoções e atualizações de pacotes. Este histórico é inestimável para solução de problemas, auditoria e até mesmo para reverter alterações, se necessário.

Primeiro, vamos visualizar o resumo de todas as transações do DNF que ocorreram em seu sistema.

sudo dnf history | tee ~/project/dnf-history.txt

Você verá uma tabela listando cada transação com um ID, a linha de comando usada, a data e hora, a(s) ação(ões) realizada(s) e o número de pacotes alterados.

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

A coluna ID é particularmente importante, pois permite que você se refira a transações específicas. Neste laboratório, você pode capturar o ID da transação de remoção do httpd da saída do histórico e reutilizá-lo nos próximos comandos.

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

Este comando fornece um detalhamento abrangente da transação selecionada, incluindo os pacotes que foram removidos, suas versões e o motivo da ação.

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

Um dos recursos mais poderosos do histórico do DNF é a capacidade de desfazer ou refazer transações. Vamos desfazer a transação de remoção do httpd reutilizando o valor HTTPD_REMOVE_ID que você acabou de capturar.

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

Este comando reinstalará o pacote httpd e suas dependências que foram removidas nessa transação específica.

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!

Você pode verificar se o httpd está instalado novamente:

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

Por fim, vamos remover o httpd novamente para deixar o sistema em um estado limpo para futuros laboratórios.

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

Esta etapa demonstrou como usar o dnf history para visualizar, inspecionar e até mesmo reverter transações do DNF, fornecendo recursos poderosos para o gerenciamento do sistema.

Resumo

Neste laboratório, aprendemos habilidades essenciais para gerenciar pacotes de software no Red Hat Enterprise Linux usando o DNF. Começamos entendendo o comando subscription-manager, crucial para registrar sistemas na Red Hat e acessar sua rede de entrega de conteúdo, embora o registro completo não fosse possível no ambiente simulado.

Posteriormente, exploramos como consultar informações de pacotes RPM, instalar e remover software usando o DNF, gerenciar repositórios de software DNF e visualizar o histórico de transações do DNF. Essas etapas forneceram uma visão abrangente das capacidades do DNF para um gerenciamento de software eficiente.