Linux での「sudo: yum: command not found」エラーのトラブルシューティング

LinuxBeginner
オンラインで実践に進む

はじめに

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

YUM Command Not Found

この実践的な実験では、CentOS 環境での実践的な演習を通じて、この一般的な問題を診断して解決する方法を学びます。Docker を使用して CentOS コンテナを作成し、そこで安全にパッケージ管理を試し、YUM に関連する問題のトラブルシューティングを行い、システムメンテナンスのベストプラクティスを適用することができます。

この実験では学習のためにインターネット接続が必要です。したがって、Pro ユーザーのみが仮想マシンを起動できます。アカウントを Pro にアップグレードする

Docker を使用した CentOS 環境のセットアップ

この実験では、Docker を使用して YUM パッケージマネージャを操作できる CentOS 環境を作成します。Docker を使うと、ホストシステムに影響を与えることなく、テストやトラブルシューティング用の孤立したコンテナをすばやくセットアップできます。

Linux のパッケージマネージャについて

異なる Linux ディストリビューションでは、異なるパッケージ管理システムが使用されています。

  1. Debian ベースのディストリビューション (Ubuntu、Debian、Linux Mint):

    • APT パッケージマネージャ (Advanced Package Tool) を使用
    • パッケージ形式:.deb
    • コマンド:aptapt-getdpkg
  2. Red Hat ベースのディストリビューション (RHEL、CentOS、Fedora):

    • YUM (Yellowdog Updater, Modified) または DNF (Dandified YUM) を使用
    • パッケージ形式:.rpm
    • コマンド:yumdnfrpm

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 を使用していることを示す情報が表示されるはずです。

CentOS Container

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」というエラーが表示されます。これが今回トラブルシューティングの対象となるエラーです。

YUM Error

エラーの原因を理解する

「sudo: yum: command not found」というエラーは、いくつかの理由で発生する可能性があります。

  1. YUM パッケージがインストールされていない
  2. YUM 実行ファイルが移動、名前変更、または削除されている
  3. PATH 環境変数に YUM 実行ファイルが含まれるディレクトリが設定されていない
  4. 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 Working

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 の設定は主に以下のファイルとディレクトリによって管理されます。

  1. メイン設定ファイル:/etc/yum.conf
  2. リポジトリファイルのディレクトリ:/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: パッケージが配置されている URL
  • enabled: リポジトリがアクティブ(1)か非アクティブ(0)か
  • gpgcheck: パッケージの署名を検証する(1)かしない(0)か

リポジトリ問題のシミュレーション

リポジトリディレクトリの名前を変更することで、リポジトリ問題をシミュレートしましょう。

mv /etc/yum.repos.d /etc/yum.repos.d.backup
mkdir /etc/yum.repos.d

これで、YUM を使用してみましょう。

yum update

有効なリポジトリが見つからないというエラーが表示されるでしょう。これは、YUM が正しくインストールされていても動作しない原因となる一般的な問題です。

YUM Error

リポジトリ設定の復元

リポジトリ設定を復元しましょう。

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」エラーのトラブルシューティングに関するこの実験を完了したことをお祝いします。この実践的な演習では、以下のことを行いました。

  1. 安全な実験のために Docker を使用して CentOS 環境をセットアップしました。
  2. 「yum: command not found」エラーをシミュレートし、診断しました。
  3. YUM の機能を復元するための様々な解決策を実装しました。
  4. 一般的な YUM 設定問題とその解決方法を調査しました。
  5. YUM のメンテナンスとトラブルシューティングのベストプラクティスを学びました。

この実験からの重要なポイントは次の通りです。

  • 「yum: command not found」エラーは、実行ファイルの欠落、権限の誤設定、または PATH の問題によって発生する可能性があります。
  • YUM の設定は /etc/yum.conf/etc/yum.repos.d/ 内のファイルによって管理されます。
  • キャッシュのクリーニングやパッケージの更新などの定期的なメンテナンスタスクは、システムの健全性を維持するのに役立ちます。
  • Docker は、Linux システムを安全に学習し、トラブルシューティングするための優れた環境を提供します。

これらのスキルは、Red Hat ベースの Linux システムのメンテナンスとトラブルシューティングに役立ち、ソフトウェアのインストールやシステムの更新のためのパッケージ管理システムが正しく機能することを保証します。