はじめに
CentOS や RHEL などの Red Hat ベースの Linux ディストリビューションを使用する際に、「sudo: yum: command not found」というエラーが発生すると、ソフトウェアパッケージのインストールやシステムの更新ができなくなることがあります。このエラーは、通常、YUM パッケージマネージャが欠落している、設定が誤っている、または破損している場合に発生します。

この実践的な実験では、CentOS 環境での実践的な演習を通じて、この一般的な問題を診断して解決する方法を学びます。Docker を使用して CentOS コンテナを作成し、そこで安全にパッケージ管理を試し、YUM に関連する問題のトラブルシューティングを行い、システムメンテナンスのベストプラクティスを適用することができます。
この実験では学習のためにインターネット接続が必要です。したがって、Pro ユーザーのみが仮想マシンを起動できます。アカウントを Pro にアップグレードする。
Docker を使用した CentOS 環境のセットアップ
この実験では、Docker を使用して YUM パッケージマネージャを操作できる CentOS 環境を作成します。Docker を使うと、ホストシステムに影響を与えることなく、テストやトラブルシューティング用の孤立したコンテナをすばやくセットアップできます。
Linux のパッケージマネージャについて
異なる Linux ディストリビューションでは、異なるパッケージ管理システムが使用されています。
Debian ベースのディストリビューション (Ubuntu、Debian、Linux Mint):
- APT パッケージマネージャ (Advanced Package Tool) を使用
- パッケージ形式:
.deb - コマンド:
apt、apt-get、dpkg
Red Hat ベースのディストリビューション (RHEL、CentOS、Fedora):
- YUM (Yellowdog Updater, Modified) または DNF (Dandified YUM) を使用
- パッケージ形式:
.rpm - コマンド:
yum、dnf、rpm
CentOS コンテナの作成
まず、Docker を使って CentOS コンテナを作成しましょう。ターミナルを開き、次のコマンドを実行します。
docker run -it --name centos-lab centos:7 /bin/bash
このコマンドは以下のことを行います。
centos-labという名前のインタラクティブなコンテナを作成- CentOS 7 イメージを使用
- コンテナ内で bash シェルを起動
このコマンドを実行すると、ターミナルのプロンプトが変わり、CentOS コンテナ内で作業していることを示します。システム情報を確認することで、これを確認できます。
cat /etc/os-release
CentOS Linux を使用していることを示す情報が表示されるはずです。

YUM エラーのシミュレーションと診断
このステップでは、「sudo: yum: command not found」というエラーをシミュレーションし、その診断方法を学びます。CentOS では通常、YUM が事前にインストールされていますが、ここでは YUM が欠落しているか破損しているシナリオを作成します。
YUM のインストール確認
まず、CentOS コンテナに YUM がインストールされているかを確認しましょう。
which yum
rpm -q yum
which yum コマンドは YUM 実行ファイルのパス(通常は /usr/bin/yum)を表示し、rpm -q yum はインストールされている YUM パッケージのバージョンを表示します。
テストシナリオの作成
YUM が欠落している状況をシミュレートするために、YUM 実行ファイルの名前を変更しましょう。
mv /usr/bin/yum /usr/bin/yum.backup
これで、YUM を使用してみましょう。
yum update
「yum: command not found」のようなエラーメッセージが表示されるはずです。これは、システムから YUM 実行ファイルが欠落している場合に起こることをシミュレートしています。
sudo でも試してみましょう。
sudo yum update
「sudo: yum: command not found」というエラーが表示されます。これが今回トラブルシューティングの対象となるエラーです。

エラーの原因を理解する
「sudo: yum: command not found」というエラーは、いくつかの理由で発生する可能性があります。
- YUM パッケージがインストールされていない
- YUM 実行ファイルが移動、名前変更、または削除されている
- PATH 環境変数に YUM 実行ファイルが含まれるディレクトリが設定されていない
- YUM を実行するための権限が不足している
PATH 環境変数を確認してみましょう。
echo $PATH
これにより、コロンで区切られたディレクトリのリストが表示されます。/usr/bin(YUM が通常配置されている場所)がこのリストに含まれていることを確認してください。
欠落した YUM の問題を解決する
問題の診断ができたので、「yum: command not found」エラーを解決しましょう。この問題の根本原因に応じて、いくつかの解決方法があります。
YUM 実行ファイルの復元
前のステップで YUM 実行ファイルの名前を変更したので、元の場所に戻しましょう。
mv /usr/bin/yum.backup /usr/bin/yum
これで、YUM が再び動作していることを確認しましょう。
yum --version
YUM のバージョン情報が表示され、YUM がアクセス可能になったことを示します。

YUM のインストール(欠落している場合)
YUM が完全に欠落している実際のシナリオでは、低レベルのパッケージ管理ツールである RPM (Red Hat Package Manager) を使用してインストールする必要があります。以下はその方法です。
## これはデモンストレーション用です。YUM を既に復元しているので、このコマンドを実行しないでください
## rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm
YUM の権限の修正
YUM が存在するが権限が正しくない場合、chmod コマンドを使用して修正できます。
## 現在の権限を確認する
ls -l /usr/bin/yum
## 必要に応じて正しい権限を設定する
chmod 755 /usr/bin/yum
YUM の正しい権限は 755(誰でも読み取りと実行が可能で、所有者のみ書き込みが可能)です。
PATH の更新(必要な場合)
YUM が含まれるディレクトリが PATH に含まれていない場合、一時的に以下のコマンドで追加できます。
export PATH=$PATH:/usr/bin
恒久的な解決策としては、この行をシェルの設定ファイル(例:.bashrc)に追加します。
YUM 設定問題のトラブルシューティング
YUM が正しくインストールされていても、正常に動作しない他の問題に遭遇することがあります。ここでは、一般的な YUM 設定問題とその解決方法を探ってみましょう。
YUM 設定ファイルの理解
YUM の設定は主に以下のファイルとディレクトリによって管理されます。
- メイン設定ファイル:
/etc/yum.conf - リポジトリファイルのディレクトリ:
/etc/yum.repos.d/
メイン設定ファイルを見てみましょう。
cat /etc/yum.conf
このファイルには、キャッシュディレクトリ、ログファイルの場所、デフォルトオプションなどのグローバルな YUM 設定が含まれています。
YUM リポジトリの確認
YUM リポジトリは、/etc/yum.repos.d/ ディレクトリ内の .repo 拡張子のファイルで定義されています。これらのファイルを一覧表示しましょう。
ls -l /etc/yum.repos.d/
では、リポジトリファイルの 1 つを見てみましょう。
cat /etc/yum.repos.d/CentOS-Base.repo
各リポジトリ定義には以下が含まれます。
- 角括弧内の一意のリポジトリ ID(例:
[base]) name: 説明的な名前baseurl: パッケージが配置されている URLenabled: リポジトリがアクティブ(1)か非アクティブ(0)かgpgcheck: パッケージの署名を検証する(1)かしない(0)か
リポジトリ問題のシミュレーション
リポジトリディレクトリの名前を変更することで、リポジトリ問題をシミュレートしましょう。
mv /etc/yum.repos.d /etc/yum.repos.d.backup
mkdir /etc/yum.repos.d
これで、YUM を使用してみましょう。
yum update
有効なリポジトリが見つからないというエラーが表示されるでしょう。これは、YUM が正しくインストールされていても動作しない原因となる一般的な問題です。

リポジトリ設定の復元
リポジトリ設定を復元しましょう。
rm -rf /etc/yum.repos.d
mv /etc/yum.repos.d.backup /etc/yum.repos.d
これで、YUM が再び動作することを確認しましょう。
yum repolist
これにより、システム上の有効なリポジトリが一覧表示されるはずです。
YUM のメンテナンスとベストプラクティス
これまで様々な YUM の問題を解決してきました。次に、CentOS やその他の Red Hat ベースのディストリビューションにおいて、健全なパッケージ管理システムを維持するためのベストプラクティスについて説明します。
定期的なシステム更新
システムのセキュリティと安定性を保つために、定期的にシステムを更新することは重要です。以下のコマンドを定期的に実行しましょう。
## パッケージメタデータを更新する
yum check-update
## 利用可能なすべての更新をインストールする
yum update -y
YUM キャッシュのクリーニング
YUM はパッケージのメタデータとダウンロードしたパッケージのキャッシュを保持しています。定期的にこのキャッシュをクリーニングすることで、問題を解決し、ディスク領域を解放することができます。
## メタデータをクリーニングする
yum clean metadata
## パッケージをクリーニングする
yum clean packages
## すべてをクリーニングする
yum clean all
## キャッシュを再構築する
yum makecache
YUM プラグインの管理
YUM の機能はプラグインを使用して拡張することができます。インストールされているプラグインを一覧表示するには、次のコマンドを実行します。
yum list installed "yum-plugin-*"
一般的に有用なプラグインには以下のようなものがあります。
yum-plugin-fastestmirror: 自動的に最速のリポジトリミラーを選択するyum-plugin-security: セキュリティ関連性で更新をフィルタリングするyum-plugin-priorities: 異なるリポジトリに優先順位を設定する
YUM 問題のトラブルシューティング
YUM の問題に直面したときは、以下のコマンドが問題の診断に役立ちます。
## リポジトリがアクセス可能かを確認する
yum repolist
## YUM の履歴(過去のトランザクション)を表示する
yum history
## パッケージの問題をチェックする
yum check
## デバッグ出力を伴って YUM を実行する
yum -v update
コンテナからの退出
実験が終了したら、次のコマンドを入力して CentOS コンテナから退出します。
exit
これにより、Ubuntu ホストシステムに戻ります。
まとめ
Linux での「sudo: yum: command not found」エラーのトラブルシューティングに関するこの実験を完了したことをお祝いします。この実践的な演習では、以下のことを行いました。
- 安全な実験のために Docker を使用して CentOS 環境をセットアップしました。
- 「yum: command not found」エラーをシミュレートし、診断しました。
- YUM の機能を復元するための様々な解決策を実装しました。
- 一般的な YUM 設定問題とその解決方法を調査しました。
- YUM のメンテナンスとトラブルシューティングのベストプラクティスを学びました。
この実験からの重要なポイントは次の通りです。
- 「yum: command not found」エラーは、実行ファイルの欠落、権限の誤設定、または PATH の問題によって発生する可能性があります。
- YUM の設定は
/etc/yum.confと/etc/yum.repos.d/内のファイルによって管理されます。 - キャッシュのクリーニングやパッケージの更新などの定期的なメンテナンスタスクは、システムの健全性を維持するのに役立ちます。
- Docker は、Linux システムを安全に学習し、トラブルシューティングするための優れた環境を提供します。
これらのスキルは、Red Hat ベースの Linux システムのメンテナンスとトラブルシューティングに役立ち、ソフトウェアのインストールやシステムの更新のためのパッケージ管理システムが正しく機能することを保証します。



