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

パスワードの入力を求められます。これはシミュレーション環境なので、任意のパスワードを入力するか、システムが許可している場合は Enter キーを押すことができます。このコマンドは、Red Hat のサブスクリプションサービスに接続できない可能性が高く、この実験環境では想定されます。重要なのは、コマンドの構文とその意図的な使用方法を理解することです。

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

最後に、消費されたサブスクリプションを表示する方法を見てみましょう。このコマンドは、現在システムに接続されているサブスクリプションを表示します。

sudo subscription-manager list --consumed

システムが登録されていないため、消費されたサブスクリプションがないことを示すメッセージが表示されます。

No consumed subscription pools were found.

次に、Red Hat アカウントで使用可能なサブスクリプションをリストアップする方法を見てみましょう。このコマンドは、Red Hat アカウントに関連付けられたさまざまなサブスクリプションプールを表示します。

sudo subscription-manager list --available

システムはまだ登録されていないため、最初に登録が必要であることを示すエラーメッセージが表示されます。

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

この演習では、登録とサブスクリプション情報の表示のための subscription-manager の基本的な使用方法を示しました。このシミュレーション環境では、完全な機能は制限されていますが、これらのコマンドは RHEL システム上でソフトウェアへのアクセスを管理するために不可欠です。

RPM パッケージ情報の確認

このステップでは、rpm コマンドを使用してソフトウェアパッケージを調査する方法を学びます。RPM (Red Hat Package Manager) は、Red Hat Enterprise Linux で使用される主要なパッケージ管理システムです。dnf (後で詳しく説明します) はリポジトリからのパッケージ管理のためのより上位レベルのツールですが、rpm を使用すると、個々の .rpm ファイルをクエリ、検証、インストール、アンインストールできます。

まず、システム上にインストールされているすべての RPM パッケージをリストアップしましょう。これは非常に長いリストになる可能性があるので、出力は head にパイプして最初の部分だけを表示します。

rpm -qa | head

パッケージ名、バージョン、アーキテクチャのリストが表示されます。たとえば:

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

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

rpm -qf /etc/yum.repos.d

出力は、このディレクトリを所有するパッケージを表示します。

redhat-release-9.4-0.4.el9.x86_64

次に、インストール済みのパッケージの詳細情報を取得してみましょう。dnf パッケージ自体を例として使用します。

rpm -qi dnf

このコマンドは、パッケージ名、バージョン、リリース、アーキテクチャ、サイズ、概要、URL、ライセンス、詳細な説明など、豊富な情報を提供します。

(出力省略)

また、パッケージによってインストールされたすべてのファイルのリストを表示することもできます。これは、パッケージがシステムに何を作成するかを理解するのに役立ちます。

rpm -ql dnf | head -n 10

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

(出力省略)

パッケージによってインストールされた設定ファイルのみを表示するには、-qc オプションを使用します。openssh-clients パッケージを確認してみましょう。

rpm -qc openssh-clients

これにより、SSH クライアントに関連する設定ファイルが表示されます。

(出力省略)

最後に、パッケージの変更ログ情報を表示するには、--changelog オプションを使用します。これにより、パッケージのアップデートや修正の歴史について理解できます。audit パッケージを見てみましょう。

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

パッケージがインストールされていない場合、エラーメッセージが表示されます。

package audit is not installed

代わりにインストール済みのパッケージを試すことができます。たとえば、setup パッケージで試してみましょう。

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

これらの rpm コマンドは、システムにインストールされているパッケージとその内容を理解するための強力なツールです。

DNF を使用したソフトウェアパッケージのインストールと削除

このステップでは、dnf (Dandified YUM) を使用してソフトウェアパッケージを管理する方法を学びます。dnf は Red Hat Enterprise Linux 9 のデフォルトのパッケージマネージャーであり、ソフトウェアパッケージのインストール、更新、削除、およびソフトウェアリポジトリの管理に使用されます。rpm だけを使用するよりも、依存関係を自動的に処理するため、ソフトウェア管理がはるかに簡単になります。

最初に、名前の中に "http" を含むすべての利用可能でインストール済みのパッケージをリストアップしましょう。これにより、HTTP サービスに関連するパッケージの概要が得られます。

sudo dnf list 'http*'

インストール済みか、インストール可能かの情報とともに、パッケージのリストが表示されます。

(出力省略)

次に、名前、概要、または説明に "web server" を含むパッケージを検索しましょう。search all オプションは、より広範な検索に役立ちます。

sudo dnf search all 'web server'

このコマンドは、検索条件に一致するパッケージのリストを返します。

(出力省略)

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

sudo dnf info httpd

パッケージのサイズ、ライセンス、説明など、包括的な詳細が表示されます。

(出力省略)

次に、httpd パッケージをインストールしましょう。この操作には sudo 権限が必要です。

sudo dnf install httpd -y

-y フラグは、プロンプトに自動的に「はい」と答えます。スクリプトでは便利です。ただし、本番環境では注意が必要です。

(出力省略)

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

rpm -q httpd
(出力省略)

次に、httpd パッケージを削除しましょう。

sudo dnf remove httpd -y

これにより、httpd パッケージと、他のインストール済みパッケージによってもはや必要とされない依存関係が削除されます。

(出力省略)

削除が完了したことを確認するために、rpm を使用してクエリを実行します。

rpm -q httpd
package httpd is not installed

これで、ソフトウェアパッケージのインストールと削除の基本的な dnf コマンドが示されました。

DNF ソフトウェアリポジトリの管理

このステップでは、DNF ソフトウェアリポジトリの管理方法を学びます。リポジトリはソフトウェアパッケージが保存され、dnf がそこからパッケージを取得する場所です。リポジトリのリスト表示、有効化、無効化、追加方法を理解することは、システムで使用可能なソフトウェアを制御するために非常に重要です。

最初に、構成済みのすべての DNF リポジトリとその状態(有効または無効)をリスト表示しましょう。

sudo dnf repolist all

リポジトリ ID、名前、現在の状態のリストが表示されます。

(出力省略)

dnf config-manager コマンドは、リポジトリ設定を管理するための強力なツールです。このコマンドを使用して、リポジトリを有効または無効にすることができます。たとえば、仮のデバッグリポジトリを有効化してみましょう。この特定のリポジトリは、この実験環境では存在しないかアクセスできない可能性がありますが、コマンドの構文を示しています。

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

サブスクリプション管理に関するメッセージと、リポジトリが見つからないことを示すエラーが表示されます。これは、この環境で想定されることです。

(出力省略)

次に、リポジトリを無効化してみましょう。rhel-9-for-x86_64-appstream-rpms を例として使用します。注意:この特定のリポジトリ名は、この UBI 環境には存在しません。しかし、コマンドの構文を示しています。

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

サブスクリプション管理に関するメッセージと、この環境にリポジトリが存在しないことを示すエラーが表示されます。

(出力省略)

このリポジトリ名が現在のシステムに存在しないことを確認しましょう。

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

予想通り、このリポジトリは UBI 環境に存在しないため、出力はありません。

(出力なし)

リポジトリが存在しないことを確認するために、同じ有効化コマンドを試してみましょう。

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

再び、同じエラーメッセージが表示されます。

(出力省略)

dnf config-manager --add-repo コマンドは、URL を指定して新しいリポジトリを追加することもできます。デモのために、一般的な EPEL (Extra Packages for Enterprise Linux) リポジトリの URL を追加してみましょう。これは、GPG キーや特定の .repo ファイルが必要な場合があるため、リポジトリを完全に構成するわけではない可能性がありますが、コマンドの機能を示しています。

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

新しい .repo ファイルが作成されたことを示す出力が表示されます。

(出力省略)

新しく作成された .repo ファイルを /etc/yum.repos.d/ で確認できます。ファイル名は URL から派生します。

ls /etc/yum.repos.d/

既存のリポジトリファイルとともに、dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo などのファイルが表示されるはずです。

(出力省略)

最後に、追加したリポジトリ設定ファイルを削除してクリーンアップします。

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

このステップでは、RHEL でソフトウェアソースを管理するために不可欠な、DNF リポジトリのリスト表示、有効化、無効化、追加方法を学びました。

DNF トランザクション履歴の確認

このステップでは、DNF オペレーションのトランザクション履歴を確認する方法を学びます。dnf は、すべてのソフトウェアパッケージのインストール、削除、更新の詳細なログを保持しています。この履歴は、トラブルシューティング、監査、必要に応じて変更を元に戻すために非常に価値があります。

最初に、システムで発生したすべての DNF トランザクションの概要を確認しましょう。

sudo dnf history

各トランザクションの ID、使用したコマンドライン、日時、実行されたアクション、変更されたパッケージ数を含む表が表示されます。

ID     | コマンドライン              | 日時        | アクション      | 変更数
--------------------------------------------------------------------------------
     3 | install httpd             | 2024-04-22 08:00 | インストール    |   10
     2 | remove httpd              | 2024-04-22 08:01 | 削除         |    6
     1 |                           | 2024-04-22 07:50 | インストール    |  767 EE

ID 列は特に重要です。特定のトランザクションを参照するために使用できます。たとえば、特定のトランザクションの詳細を確認したい場合、dnf history info <ID> を使用できます。前のステップで httpd の削除に関する最後のトランザクション(これは、前のステップで httpd を削除したトランザクションであるはずです)の詳細を見てみましょう。dnf history の出力から ID を見つけることができます。上記の例では、2 です。

sudo dnf history info 2

このコマンドは、選択したトランザクションの包括的な概要を提供します。削除されたパッケージ、そのバージョン、アクションの理由などが含まれます。

(出力省略)

DNF 履歴の最も強力な機能の 1 つは、トランザクションを元に戻したり、やり直したりできることです。たとえば、httpd の削除を元に戻すには、dnf history undo <ID> を使用します。httpd の削除トランザクション(dnf history 出力からの ID、たとえば 2)を元に戻してみましょう。

sudo dnf history undo 2 -y

このコマンドは、その特定のトランザクションで削除された httpd パッケージとその依存関係を再インストールします。

(出力省略)

これで、httpd が再びインストールされていることを確認できます。

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

最後に、将来の実験のためにシステムをクリーンな状態にするために、httpd をもう一度削除します。

sudo dnf remove httpd -y
(出力省略)

このステップでは、dnf history を使用して DNF トランザクションを表示、検査、さらには元に戻す方法を示しました。これにより、システム管理に強力な機能が提供されます。

まとめ

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

その後、RPM パッケージ情報の照会方法、DNF を使用したソフトウェアのインストールと削除、DNF ソフトウェアリポジトリの管理、DNF トランザクション履歴の確認方法を学びました。これらのステップは、効率的なソフトウェア管理のための DNF の機能を包括的に概観するものでした。