Red Hat Enterprise Linux でのソフトウェアインストール

Red Hat Enterprise LinuxBeginner
オンラインで実践に進む

はじめに

この実験では、DNF を使用して Red Hat Enterprise Linux (RHEL) システム上のソフトウェアパッケージを管理する実践的な経験を積みます。まず、シミュレーション環境であっても Red Hat サポート登録のための subscription-manager コマンドの役割を理解することから始めます。続いて、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 --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.x86_64
basesystem-11-13.el9.noarch
pcre2-syntax-10.40-5.el9.noarch
ncurses-base-6.2-10.20210508.el9.noarch

次に、特定のファイルを提供しているパッケージを特定します。例として、DNF リポジトリ設定ファイルが含まれるディレクトリ /etc/yum.repos.d を使用します。

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

これらのコマンドは、まず /usr/bin/dnf を所有する RPM を特定し、次にバージョン、リリース、アーキテクチャ、ライセンス、概要を含む詳細なパッケージメタデータを表示します。

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

これにより、dnf パッケージによってインストールされた最初の 10 個のファイルが表示されます。

/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 を使用します。これは、パッケージのアップデートや修正の履歴を把握するのに役立ちます。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

Apache HTTP Server である httpd パッケージの詳細情報を取得します。

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!

rpm でクエリを実行して、httpd がインストールされていることを確認できます。

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 を指定して新しいリポジトリを追加することもできます。デモンストレーションとして、一般的な 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/" 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/

/etc/yum.repos.d/ に新しく作成された .repo ファイルを確認できます。ファイル名は 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 列は、特定のトランザクションを参照するために特に重要です。この実験では、履歴出力から httpd 削除トランザクションの ID を取得し、次のコマンドで再利用できます。

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 履歴の最も強力な機能の 1 つは、トランザクションの取り消し(undo)ややり直し(redo)ができることです。先ほど取得した HTTPD_REMOVE_ID 値を再利用して、httpd 削除トランザクションを取り消してみましょう。

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 トランザクションを表示、調査、取り消す方法を学びました。これはシステム管理のための強力な機能です。

まとめ

この実験では、DNF を使用して Red Hat Enterprise Linux 上でソフトウェアパッケージを管理するための重要なスキルを学びました。まず、シミュレーション環境では完全な登録は不可能でしたが、システムを Red Hat に登録し、コンテンツ配信ネットワークにアクセスするために不可欠な subscription-manager コマンドについて理解しました。

続いて、RPM パッケージ情報のクエリ、DNF を使用したソフトウェアのインストールと削除、DNF ソフトウェアリポジトリの管理、および DNF トランザクション履歴の確認方法を調査しました。これらのステップを通じて、効率的なソフトウェア管理のための DNF の機能の全体像を把握しました。