Linux における YUM を使用したパッケージの照会と更新

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

はじめに

この実験では、YUM パッケージマネージャーを使用して、RHEL ベースの Linux システムでソフトウェアパッケージを管理するための必須スキルを習得します。まず、yum list および yum deplist コマンドを使用して、現在インストールされているパッケージの詳細と依存関係を確認することから始めます。また、yum repolist を使用してシステムに設定されているソフトウェアリポジトリを探索し、ソフトウェアの提供元や利用可能なリソースについて理解を深めます。

これらの基礎スキルを習得した後、焦点はシステムのメンテナンスと更新へと移ります。yum check-update を使用して、より新しいバージョンが利用可能なパッケージを特定する方法を学びます。最後に、これらの更新を適用する実習を行い、特定の単一パッケージの更新と、環境を安全かつ最新の状態に保つための包括的なシステム全体のフルアップデートの違いについて学びます。

'yum list' と 'yum deplist' によるインストール済みパッケージの確認

このステップでは、CentOS やその他の RHEL ベースの Linux ディストリビューションの標準パッケージマネージャーである yum を使用して、インストール済みのパッケージを確認する方法を学びます。まずは、現在使用しているシェル環境を提供している可能性が高い bash パッケージを調べてみましょう。これらのコマンドは、システムに何がインストールされているか、またパッケージが機能するためにどのような他のコンポーネントに依存しているかを理解するのに役立ちます。

まず、yum list コマンドを使用して、特定のパッケージの状態を確認しましょう。このコマンドにより、パッケージがインストールされているかどうか、およびシステム上のバージョンを確認できます。

bash パッケージの詳細を確認するには、ターミナルで次のコマンドを実行します。

sudo yum list bash

次のような出力が表示され、bash がインストールされていることが確認できます。リポジトリ列の @ 記号(例:@anaconda@System)は、インストール済みのパッケージであることを示しています。

Installed Packages
bash.x86_64    <version>    @anaconda

次に、依存関係(Dependencies)の概念について説明します。ほとんどのソフトウェアパッケージは単独で完結しているわけではなく、正しく動作するためにライブラリやツールなどの他のパッケージを必要とします。これらの必要なパッケージは依存関係と呼ばれます。yum deplist コマンドを使用すると、特定のパッケージの依存関係の完全なリストを表示できます。

bash パッケージが依存しているすべてのパッケージを確認するには、次のコマンドを実行します。

sudo yum deplist bash

出力には、各依存関係とそれを提供しているパッケージが表示されます。これは、yum がどのようにソフトウェアのインストールを解決し、管理しているかを理解する上で非常に重要です。

package: bash.x86_64 <version>
  dependency: /bin/sh
   provider: bash.x86_64 <version>
  dependency: chkconfig
   provider: chkconfig.x86_64 <version>
  dependency: coreutils
   provider: coreutils.x86_64 <version>
  dependency: libc.so.6(GLIBC_2.15)(64bit)
   provider: glibc.x86_64 <version>
... (output truncated) ...

yum listyum deplist を使用することで、システムにインストールされているパッケージと、それらの相互関係を明確に把握することができます。

'yum repolist' によるリポジトリと利用可能なパッケージの探索

このステップでは、yum がパッケージを検索してインストールするために使用するソフトウェアソース(リポジトリ)を探索する方法を学びます。また、システムにインストール可能な新しいパッケージを検索する方法についても学びます。

パッケージリポジトリとは、ソフトウェアパッケージが保管されている中央集中型の保存場所です。yum にパッケージのインストールを依頼すると、設定されたリポジトリにアクセスし、必要なファイルをダウンロードしてシステムにインストールします。

現在システムで有効になっているリポジトリのリストを表示するには、yum repolist コマンドを使用します。これは、どのソフトウェアソースがアクティブであるかを確認するのに便利です。

ターミナルで次のコマンドを実行してください。

sudo yum repolist

出力には、リポジトリ ID、名前、および含まれるパッケージの数が表示されます。以下のようになります。

repo id                                                                                                                          repo name
rhui-rhel-9-for-x86_64-appstream-rhui-rpms                                                                                       Red Hat Enterprise Linux 9 for x86_64 - AppStream from RHUI (RPMs)
rhui-rhel-9-for-x86_64-baseos-rhui-rpms                                                                                          Red Hat Enterprise Linux 9 for x86_64 - BaseOS from RHUI (RPMs)

yum がどこでパッケージを探しているかがわかったところで、インストール可能なパッケージを探してみましょう。yum list available コマンドは、有効なリポジトリにあるパッケージのうち、システムにまだインストールされていないものをすべて表示します。

yum list available を単独で実行すると非常に長いリストが表示されるため、特定のものを検索するのが実用的です。ここでは、Linux カーネルに関連する利用可能なパッケージを検索してみましょう。ワイルドカード(*)を使用すると、複数のパッケージ名に一致させることができます。

kernel で始まるすべての利用可能なパッケージをリストするには、次のコマンドを実行します。

sudo yum list available 'kernel*'

kernel* をシングルクォートで囲むことは、シェルがワイルドカード自体を展開しようとするのを防ぐために重要です。出力には、利用可能なカーネル関連パッケージのリスト、バージョン、および提供元のリポジトリが表示されます。

Available Packages
kernel-devel.x86_64      <version>      updates
kernel-doc.noarch        <version>      updates
kernel-headers.x86_64    <version>      updates
... (output truncated) ...

これらのコマンドはシステムのソフトウェアを管理するために不可欠であり、ソフトウェアソースを確認したり、インストールすべき新しいツールを見つけたりすることを可能にします。

'yum check-update' による利用可能な更新の確認

このステップでは、システムにインストールされているパッケージに対して、利用可能なソフトウェアの更新があるかどうかを確認する方法を学びます。更新には脆弱性のパッチ、バグ修正、新機能が含まれることが多いため、システムを最新の状態に保つことはセキュリティと安定性にとって極めて重要なタスクです。

yum check-update コマンドを使用すると、インストール済みのパッケージのうち、リポジトリに新しいバージョンが存在するものを安全に確認できます。このコマンドは利用可能な更新をリストアップするだけであり、ダウンロードやインストールは行わないという点に注意してください。これにより、変更を適用する前に内容を確認できます。

システム上のすべての利用可能な更新を確認するには、ターミナルで次のコマンドを実行します。

sudo yum check-update

yum は有効なすべてのリポジトリに接続し、パッケージ情報のローカルキャッシュを更新して、インストール済みパッケージのバージョンと利用可能な最新バージョンを比較します。

更新がある場合は、以下のようなリストが表示されます。各行にはパッケージ名、新しいバージョン、および更新元のリポジトリが表示されます。

bind-libs.x86_64                 <version>      updates
bind-license.noarch              <version>      updates
curl.x86_64                      <version>      updates
glibc.x86_64                     <version>      updates
glibc-common.x86_64              <version>      updates
... (output truncated) ...

システムがすでに完全に最新の状態であれば、パッケージはリストされずにコマンドが終了します。このコマンドは日常的なシステムメンテナンスの不可欠な一部であり、次のステップで実際の更新プロセスに進む前に、システムのステータスを明確に把握させてくれます。

'yum update ' による単一パッケージの更新適用

このステップでは、特定のパッケージの更新を適用します。前のステップでは、yum check-update を使用して更新可能なすべてのパッケージのリストを確認しました。システム全体を一度に更新するのが一般的ですが、特定のパッケージのみを更新したい場合もあります。これにより、システムの変更をより細かく制御できます。

先ほどのリストから更新するパッケージを 1 つ選びましょう。ここでは、データの転送によく使われるツールである curl を例にします。もし curl が更新リストになかった場合は、リストにある他のパッケージを選んでください。

パッケージを更新する前に、まず curl パッケージを更新が存在する古いバージョンにダウングレードする必要があります。

sudo yum downgrade -y curl

curl パッケージのみを更新するには、次のコマンドを実行します。

sudo yum update curl

yumcurl の依存関係を解決し、何を更新する必要があるかを判断して、トランザクションの概要を表示します。この概要には、更新されるパッケージと合計ダウンロードサイズが表示されます。

Resolving Dependencies
--> Running transaction check
---> Package curl.x86_64 0:<old_version> will be updated
---> Package curl.x86_64 0:<new_version> will be an update
--> Processing Dependency: libcurl = <new_version> for package: curl-<new_version>.x86_64
--> Running transaction check
---> Package libcurl.x86_64 0:<old_version> will be updated
---> Package libcurl.x86_64 0:<new_version> will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package      Arch         Version              Repository                 Size
================================================================================
Updating:
 curl         x86_64       <new_version>        updates                    <size>
Updating for dependencies:
 libcurl      x86_64       <new_version>        updates                    <size>

Transaction Summary
================================================================================
Upgrade  1 Package (+1 Dependent package)

Total download size: <total_size>
Is this ok [y/d/N]:

変更内容を確認してください。続行する場合は y を入力して Enter キーを押します。yum が更新プログラムをダウンロードしてインストールします。

プロセスが完了すると、更新が成功したことを示す "Complete!" というメッセージが表示されます。

...
Running transaction
  Updating   : libcurl-<new_version>.x86_64                                 1/4
  Updating   : curl-<new_version>.x86_64                                    2/4
  Cleanup    : curl-<old_version>.x86_64                                    3/4
  Cleanup    : libcurl-<old_version>.x86_64                                 4/4
  Verifying  : curl-<new_version>.x86_64                                    1/4
  ...

Updated:
  curl.x86_64 <new_version>

Dependency Updated:
  libcurl.x86_64 <new_version>

Complete!

これで、単一のパッケージとその依存関係の更新に成功しました。このターゲットを絞ったアプローチは、システム全体のアップグレードを行わずに、特定のセキュリティパッチや機能更新を適用する場合に便利です。

'yum update' によるシステム全体のフルアップデートの実行

このステップでは、最も一般的で重要なパッケージ管理タスクであるシステム全体のフルアップデートを実行します。個別のパッケージ更新も有用ですが、システムのセキュリティと安定性を維持し、最新の機能やバグ修正を受け取るためには、定期的にすべてのソフトウェアを更新することが不可欠です。

パッケージ名を指定せずに yum update コマンドを実行すると、インストールされているすべてのパッケージを有効なリポジトリ内のバージョンと比較し、新しいバージョンが見つかったすべてのパッケージを更新します。

警告: このプロセスは、利用可能な更新の数やネットワーク接続速度によっては、大量のデータをダウンロードし、完了までにかなりの時間がかかる場合があります。

システム全体のアップデートを開始するには、ターミナルで次のコマンドを実行します。

sudo yum update

単一パッケージの更新と同様に、yum はまずすべての依存関係を解決し、トランザクションの概要を表示します。今回は更新が必要なすべてのパッケージが含まれるため、リストは以前よりもずっと長くなるはずです。

Resolving Dependencies
--> Running transaction check
... (many packages listed) ...

Dependencies Resolved

================================================================================
 Package               Arch         Version              Repository        Size
================================================================================
Updating:
 bind-libs             x86_64       <version>            updates           <size>
 bind-license          noarch       <version>            updates           <size>
 glibc                 x86_64       <version>            updates           <size>
 glibc-common          x86_64       <version>            updates           <size>
 ... (many more packages) ...

Transaction Summary
================================================================================
Upgrade  <X> Packages

Total download size: <total_size>
Is this ok [y/d/N]:

更新されるパッケージのリストを注意深く確認してください。今回はすべてのパッケージを更新すると時間がかかりすぎるため、確認ができたら n を入力して更新をスキップしてください。

おめでとうございます!システム全体を更新する方法を学びました。これは、Linux サーバーやワークステーションを管理し、安全で信頼性の高い状態に保つための基本的なスキルです。

まとめ

この実験では、YUM パッケージマネージャーを使用して、RHEL ベースの Linux システムでソフトウェアパッケージを管理する基礎を学びました。まず、yum list でインストール済みパッケージの状態とバージョンを確認し、yum deplist でその依存関係を調べることから始めました。また、yum repolist コマンドを使用して、アクティブなすべてのリポジトリをリストアップし、設定されたソフトウェアソースを探索しました。

その後、パッケージの更新プロセスについて学習しました。yum check-update を使用して、インストールせずにシステム全体の利用可能な更新を確認する方法を学びました。また、yum update <package> で特定のパッケージに更新を適用する練習を行い、最後に yum update コマンドでシステム全体のフルアップデートを実行して、すべてのパッチとソフトウェアアップグレードを適用し、システムを最新かつ安全な状態に保つ方法を確認しました。