AlmaLinux 10 総合ガイド 付録D: よくあるエラーメッセージと対処法

記事内に広告が含まれています。

AlmaLinux 10 総合ガイド
付録D: よくあるエラーメッセージと対処法

この付録の使い方

エラーメッセージが表示されたら、まずこの付録で該当するエラーを探してください。ブラウザの検索機能(Ctrl+F または Cmd+F)でエラーメッセージを検索すると、素早く見つけられます。

各エラーには、原因の簡潔な説明と対処コマンドを記載しています。対処法を試しても解決しない場合や、より詳しい調査が必要な場合は、付録Bのトラブルシューティングフローチャートを参照してください。

📌 深刻度の目安

  • 【軽微】 操作ミスや一時的な問題。すぐに対処可能
  • 【要注意】 設定の見直しが必要。対処を誤るとさらに問題が起きる可能性
  • 【重大】 サービス停止やデータ損失につながる可能性。慎重に対処すること

D.1 ファイル操作エラー

ファイルやディレクトリの操作中に発生するエラーです。Linux操作の基本となるため、初学者が最も遭遇しやすいエラーでもあります。

Permission denied

【要注意】

原因: ファイルやディレクトリへのアクセス権限がありません。パーミッション不足、所有者の問題、またはSELinuxによる制限が考えられます。

対処法:

  1. パーミッションを確認:
    $ ls -l [対象ファイル]
  2. 所有者を確認し、必要に応じて変更:
    $ sudo chown [ユーザー]:[グループ] [対象ファイル]
  3. パーミッションを変更:
    $ sudo chmod [権限] [対象ファイル]
  4. SELinuxが原因の可能性を確認:
    $ ls -Z [対象ファイル]

詳細: 第2章「2.9 ユーザーと権限の基礎」、第7章「7.4 SELinuxの基礎」参照

関連: 付録B「B.4 パーミッションエラー」参照

No such file or directory

【軽微】

原因: 指定したファイルまたはディレクトリが存在しません。パスの入力ミス、ファイルの削除、またはシンボリックリンク先が存在しないことが考えられます。

対処法:

  1. 現在のディレクトリを確認:
    $ pwd
  2. ファイルの存在を確認:
    $ ls -la [親ディレクトリ]
  3. パスのスペルミスがないか確認(タブ補完を活用)
  4. ファイルを検索:
    $ find / -name "[ファイル名]" 2>/dev/null

詳細: 第2章「2.3 ファイルとディレクトリの操作」参照

File exists

【軽微】

原因: 作成しようとしたファイルまたはディレクトリと同名のものが既に存在します。

対処法:

  1. 既存ファイルを確認:
    $ ls -la [対象パス]
  2. 上書きする場合(コピー):
    $ cp -f [コピー元] [コピー先]
  3. 上書きする場合(移動):
    $ mv -f [移動元] [移動先]
  4. 別名で作成することを検討

詳細: 第2章「2.3 ファイルとディレクトリの操作」参照

Is a directory

【軽微】

原因: ファイルを期待するコマンドに対して、ディレクトリを指定しています。

対処法:

  1. 対象がディレクトリであることを確認:
    $ ls -ld [対象パス]
  2. ディレクトリ内のファイルを指定するか、適切なオプション(-r など)を使用

詳細: 第2章「2.3 ファイルとディレクトリの操作」参照

Not a directory

【軽微】

原因: ディレクトリを期待する操作に対して、ファイルを指定しています。または、パスの途中にあるべきディレクトリがファイルになっています。

対処法:

  1. 対象の種類を確認:
    $ ls -ld [対象パス]
  2. パスの各要素が正しいか確認
  3. 必要に応じてディレクトリを作成:
    $ mkdir -p [ディレクトリパス]

詳細: 第2章「2.3 ファイルとディレクトリの操作」参照

Directory not empty

【軽微】

原因: rmdirコマンドで削除しようとしたディレクトリにファイルが残っています。

対処法:

  1. ディレクトリの中身を確認:
    $ ls -la [ディレクトリ]
  2. 中身ごと削除する場合(要注意):
    $ rm -r [ディレクトリ]

🚨 注意: rm -rは再帰的に削除します。実行前に必ず対象を確認してください。

詳細: 第2章「2.3 ファイルとディレクトリの操作」参照

Read-only file system

【要注意】

原因: ファイルシステムが読み取り専用でマウントされています。ディスクエラーにより自動的に読み取り専用になった可能性があります。

対処法:

  1. マウント状態を確認:
    $ mount | grep [対象パーティション]
  2. 読み書き可能で再マウント:
    $ sudo mount -o remount,rw [マウントポイント]
  3. 上記で解決しない場合、ファイルシステムエラーの可能性:
    $ dmesg | tail -30

    でエラーを確認

詳細: 第4章「4.5 マウントの理解と実践」参照

関連: 付録B「B.3 ディスク容量不足」参照

Too many open files

【要注意】

原因: プロセスが開けるファイル数の上限に達しています。アプリケーションのリソースリークか、システムの制限値が低すぎることが原因です。

対処法:

  1. 現在の制限値を確認:
    $ ulimit -n
  2. システム全体の制限を確認:
    $ cat /proc/sys/fs/file-max
  3. 開いているファイル数を確認:
    $ sudo lsof | wc -l
  4. 一時的に制限を緩和(現在のセッションのみ):
    $ ulimit -n 65535

詳細: 第8章参照


D.2 ディスク関連エラー

ディスク容量やファイルシステムに関するエラーです。放置するとサービス停止につながるため、早急な対処が必要です。

No space left on device

【重大】

🚨 重要: ディスク容量不足はサービス停止やデータ損失につながる可能性があります。慎重に、しかし迅速に対処してください。

原因: ディスクの空き容量がなくなっています。

対処法:

  1. 容量使用状況を確認:
    $ df -h
  2. 大きなディレクトリを特定:
    $ sudo du -sh /* | sort -rh | head -10
  3. 大きなファイルを特定(/var以下の例):
    $ sudo du -ah /var | sort -rh | head -20
  4. ログファイルが肥大化している場合は空にする(削除ではない):
    $ sudo truncate -s 0 /var/log/[ログファイル名]
  5. パッケージキャッシュをクリア:
    $ sudo dnf5 clean all

⚠️ 注意: サービスが使用中のログファイルは rm ではなく truncate で空にしてください。rm で削除すると、ファイルハンドルが残り容量が解放されないことがあります。

詳細: 第4章「4.7 ディスク使用量の管理」、第8章参照

関連: 付録B「B.3 ディスク容量不足」参照

Filesystem is read-only / Read-only file system

【要注意】

原因: ファイルシステムが読み取り専用でマウントされています。ディスクエラーやハードウェア障害により自動的にこの状態になることがあります。

対処法:

  1. 読み書き可能で再マウントを試みる:
    $ sudo mount -o remount,rw /
  2. 失敗する場合、システムログを確認:
    $ dmesg | grep -i error | tail -20
  3. ファイルシステムチェックが必要な場合(シングルユーザーモードで実行推奨):
    $ sudo fsck -y /dev/[デバイス名]

詳細: 第4章「4.5 マウントの理解と実践」参照

Structure needs cleaning

【重大】

原因: ファイルシステムの整合性が失われています。突然の電源断やハードウェア障害が原因の可能性があります。

対処法:

  1. 該当パーティションをアンマウント:
    $ sudo umount /dev/[デバイス名]
  2. ファイルシステムチェックを実行:
    $ sudo fsck -y /dev/[デバイス名]
  3. ルートファイルシステムの場合は、レスキューモードで起動して実行

🚨 注意: マウント中のファイルシステムに対して fsck を実行すると、データが破損する可能性があります。必ずアンマウントしてから実行してください。

詳細: 第4章参照

mount: wrong fs type, bad option, bad superblock

【要注意】

原因: マウント時のファイルシステムタイプの指定が間違っている、または破損しています。

対処法:

  1. ファイルシステムタイプを確認:
    $ sudo blkid /dev/[デバイス名]
  2. 正しいファイルシステムタイプを指定してマウント:
    $ sudo mount -t xfs /dev/[デバイス名] /mnt/point
  3. カーネルログで詳細を確認:
    $ dmesg | tail -20

詳細: 第4章「4.5 マウントの理解と実践」参照

mount: /dev/xxx already mounted or /mnt busy

【軽微】

原因: 指定したデバイスが既にマウントされているか、マウントポイントが使用中です。

対処法:

  1. 現在のマウント状態を確認:
    $ mount | grep [デバイス名またはマウントポイント]
  2. マウントポイントを使用しているプロセスを確認:
    $ sudo lsof +D /mnt/point
  3. 必要に応じてアンマウント:
    $ sudo umount /mnt/point

詳細: 第4章「4.5 マウントの理解と実践」参照


D.3 ネットワークエラー

ネットワーク接続に関するエラーです。原因が多岐にわたるため、段階的に切り分けを行う必要があります。

Connection refused

【要注意】

原因: 接続先でサービスが起動していない、またはファイアウォールでブロックされています。

対処法:

原因1: サービスが起動していない

  • サービス状態を確認:
    $ systemctl status [サービス名]
  • サービスを起動:
    $ sudo systemctl start [サービス名]

原因2: ファイアウォールでブロック

  • ファイアウォール設定を確認:
    $ sudo firewall-cmd --list-all
  • ポートを開放(永続設定):
    $ sudo firewall-cmd --add-port=[ポート]/tcp --permanent
    $ sudo firewall-cmd --reload

原因3: サービスがローカルホストのみでリッスン

  • リッスンしているアドレスを確認:
    $ sudo ss -tlnp | grep :[ポート]
  • 127.0.0.1のみの場合、設定ファイルでバインドアドレスを変更

詳細: 第5章「サービス管理」、第6章「6.5 firewalldによるファイアウォール設定」参照

関連: 付録B「B.1 サービスが起動しない」「B.2 ネットワークに繋がらない」参照

Connection timed out

【要注意】

原因: 接続先に到達できないか、応答がありません。ネットワーク経路の問題、ファイアウォール、または相手側サーバーの問題が考えられます。

対処法:

  1. 基本的な疎通を確認(ゲートウェイへのping):
    $ ping -c 3 [ゲートウェイIP]
  2. 外部への疎通を確認:
    $ ping -c 3 8.8.8.8
  3. 経路を確認:
    $ traceroute [宛先IP]
  4. ファイアウォールを確認:
    $ sudo firewall-cmd --list-all

詳細: 第6章「6.2 ネットワークの基礎知識」参照

関連: 付録B「B.2 ネットワークに繋がらない」参照

Network is unreachable

【要注意】

原因: 宛先ネットワークへの経路がありません。デフォルトゲートウェイが設定されていないか、ルーティングテーブルに問題があります。

対処法:

  1. ネットワークインターフェースの状態を確認:
    $ ip link
  2. IPアドレスを確認:
    $ ip addr
  3. ルーティングテーブルを確認:
    $ ip route
  4. default viaの行がなければ、ゲートウェイを設定:
    $ sudo nmcli connection modify [接続名] ipv4.gateway [ゲートウェイIP]
    $ sudo nmcli connection up [接続名]

詳細: 第6章「6.4 NetworkManagerによるネットワーク設定」参照

関連: 付録B「B.2 ネットワークに繋がらない」参照

Name or service not known / Temporary failure in name resolution

【要注意】

原因: DNS名前解決に失敗しています。DNSサーバーの設定がないか、DNSサーバーに到達できません。

対処法:

  1. DNS設定を確認:
    $ cat /etc/resolv.conf
  2. NetworkManagerのDNS設定を確認:
    $ nmcli device show | grep DNS
  3. DNSサーバーへの到達性を確認:
    $ ping -c 3 8.8.8.8
  4. digコマンドでDNS解決をテスト:
    $ dig example.com
  5. DNSサーバーを設定:
    $ sudo nmcli connection modify [接続名] ipv4.dns "8.8.8.8 8.8.4.4"
    $ sudo nmcli connection up [接続名]

詳細: 第6章「6.4.6 DNSサーバーの設定」参照

関連: 付録B「B.2 ネットワークに繋がらない」参照

Host is unreachable

【要注意】

原因: 特定のホストに到達できません。ARPが解決できないか、相手がダウンしています。

対処法:

  1. ゲートウェイへの疎通を確認:
    $ ping -c 3 [ゲートウェイIP]
  2. 同一セグメント内の場合、ARPテーブルを確認:
    $ ip neigh
  3. 相手ホストが起動しているか確認

詳細: 第6章「6.2 ネットワークの基礎知識」参照

ping: connect: Network is unreachable

【要注意】

原因: ネットワーク設定が不完全です。IPアドレスまたはデフォルトゲートウェイが設定されていません。

対処法:

  1. インターフェースがUPか確認:
    $ ip link
  2. IPアドレスが設定されているか確認:
    $ ip addr
  3. 接続を有効化:
    $ sudo nmcli connection up [接続名]

詳細: 第6章「6.4 NetworkManagerによるネットワーク設定」参照

関連: 付録B「B.2 ネットワークに繋がらない」参照

curl: (7) Failed to connect to [ホスト] port [ポート]: Connection refused

【要注意】

原因: HTTP/HTTPS接続に失敗しています。複合的な原因(サービス未起動、ファイアウォール、DNS等)が考えられます。

対処法:

  1. 名前解決を確認:
    $ dig [ホスト名]
  2. 基本的な疎通を確認:
    $ ping -c 3 [ホスト名またはIP]
  3. ポートへの接続を確認:
    $ ss -tlnp | grep :[ポート]
  4. ファイアウォールを確認:
    $ sudo firewall-cmd --list-all

詳細: 第6章参照

関連: 付録B「B.2 ネットワークに繋がらない」参照


D.4 サービス起動エラー

systemdで管理されるサービスの起動に関するエラーです。

Job for xxx.service failed because the control process exited with error code

【要注意】

原因: サービスの起動プロセスがエラーで終了しました。設定ファイルの誤り、依存関係の問題、またはリソース不足が考えられます。

対処法:

  1. サービスの状態を確認:
    $ systemctl status [サービス名]
  2. 詳細なログを確認:
    $ journalctl -xe -u [サービス名]
  3. 設定ファイルの構文を確認(サービスごとに異なる):
    # Apache の場合
    $ sudo apachectl configtest
    
    # Nginx の場合
    $ sudo nginx -t
  4. パーミッションを確認:
    $ ls -la /etc/[サービス設定ディレクトリ]/

詳細: 第5章「systemdによるサービス管理」、第8章参照

関連: 付録B「B.1 サービスが起動しない」参照

Failed to start xxx.service: Unit not found / Unit xxx.service could not be found

【軽微】

原因: 指定したサービスが存在しません。パッケージがインストールされていないか、サービス名が間違っています。

対処法:

  1. サービス名を確認(類似名を検索):
    $ systemctl list-unit-files | grep [キーワード]
  2. パッケージがインストールされているか確認:
    $ dnf5 list --installed | grep [パッケージ名]
  3. 必要なパッケージをインストール:
    $ sudo dnf5 install [パッケージ名]

詳細: 第5章「systemdによるサービス管理」、第3章「パッケージ管理」参照

Address already in use

【要注意】

原因: サービスが使用しようとしているポートが、別のプロセスに占有されています。

対処法:

  1. ポートを使用しているプロセスを特定:
    $ sudo ss -tlnp | grep :[ポート番号]
  2. プロセスの詳細を確認:
    $ ps aux | grep [PID]
  3. 不要なプロセスを停止するか、サービスのポート設定を変更

詳細: 第5章「systemdによるサービス管理」参照

関連: 付録B「B.1 サービスが起動しない」参照

Main process exited, code=exited, status=1/FAILURE

【要注意】

原因: サービスのメインプロセスがエラーコード1(一般的なエラー)で終了しました。

対処法:

  1. journalctlで詳細なエラーメッセージを確認:
    $ journalctl -xe -u [サービス名]
  2. サービス固有のログファイルを確認:
    $ sudo tail -50 /var/log/[サービス名]/error.log
  3. 設定ファイルの構文チェック(サービスごとに異なる)

詳細: 第5章「systemdによるサービス管理」、第8章「ログ管理」参照

関連: 付録B「B.1 サービスが起動しない」参照

xxx.service: Failed with result 'exit-code'

【要注意】

原因: サービスが異常終了しました。設定エラー、リソース不足、またはアプリケーションのバグが考えられます。

対処法:

  1. サービスの状態とエラーメッセージを確認:
    $ systemctl status [サービス名]
  2. journalctlで詳細を確認:
    $ journalctl -xe -u [サービス名] --no-pager | tail -50
  3. 設定ファイルを確認・修正し、再起動:
    $ sudo systemctl restart [サービス名]

詳細: 第5章「systemdによるサービス管理」参照

関連: 付録B「B.1 サービスが起動しない」参照


D.5 パッケージ管理エラー

dnf5によるパッケージ管理で発生するエラーです。

No match for argument: xxx

【軽微】

原因: 指定したパッケージが有効なリポジトリに存在しません。パッケージ名の誤り、またはリポジトリの問題が考えられます。

対処法:

  1. パッケージ名を検索:
    $ dnf5 search [キーワード]
  2. リポジトリが有効か確認:
    $ dnf5 repolist
  3. EPELリポジトリを追加(未追加の場合):
    $ sudo dnf5 install epel-release
  4. メタデータをクリアして再試行:
    $ sudo dnf5 clean all
    $ sudo dnf5 install [パッケージ名]

詳細: 第3章「3.4 リポジトリの管理」参照

Nothing provides xxx needed by yyy

【要注意】

原因: 依存関係を満たすパッケージが見つかりません。

対処法:

  1. 依存パッケージを提供するものを検索:
    $ dnf5 provides "*/[ライブラリ名]"
  2. EPELリポジトリを追加:
    $ sudo dnf5 install epel-release
  3. CRBリポジトリを有効化:
    $ sudo dnf5 config-manager setopt crb.enabled=1

詳細: 第3章「3.5.1 依存関係エラーの読み方と対処」参照

Error: Transaction check error

【要注意】

原因: パッケージのトランザクションに矛盾があります。パッケージの競合や依存関係の循環が考えられます。

対処法:

  1. エラーの詳細を確認し、問題のパッケージを特定
  2. 競合するパッケージを削除するか、--allowerasingオプションを使用:
    $ sudo dnf5 install [パッケージ名] --allowerasing
  3. それでも解決しない場合、キャッシュをクリア:
    $ sudo dnf5 clean all

詳細: 第3章「3.5 パッケージ管理のトラブルシューティング」参照

Another app is currently holding the yum lock / Could not open lock file

【軽微】

原因: 別のdnf/yumプロセスがパッケージデータベースをロックしています。

対処法:

  1. 他のdnfプロセスを確認:
    $ ps aux | grep dnf
  2. 自動更新サービスが実行中でないか確認:
    $ systemctl status dnf-automatic.timer
  3. プロセスが終了するまで待つ(推奨)
  4. どうしても必要な場合、ロックを解除(非推奨):
    $ sudo rm -f /var/run/dnf.pid

⚠️ 注意: ロックファイルの強制削除は、パッケージデータベースの破損を招く可能性があります。可能な限り、プロセスの終了を待ってください。

詳細: 第3章「3.5.2 ロックファイルエラーの対処」参照

Cannot download Repodata/repomd.xml / Failed to download metadata for repo

【要注意】

原因: リポジトリへの接続に失敗しています。ネットワークの問題、DNSの問題、またはリポジトリの一時障害が考えられます。

対処法:

  1. ネットワーク接続を確認:
    $ ping -c 3 mirrors.almalinux.org
  2. DNSが解決できるか確認:
    $ dig mirrors.almalinux.org
  3. キャッシュをクリアして再試行:
    $ sudo dnf5 clean all
    $ sudo dnf5 update
  4. 時間を置いて再試行(ミラーサーバーの一時障害の可能性)

詳細: 第3章「3.5.4 ダウンロードエラー時の対処」参照

GPG check FAILED

【要注意】

原因: パッケージのGPG署名検証に失敗しました。パッケージが改ざんされているか、GPGキーがインポートされていない可能性があります。

対処法:

  1. GPGキーをインポート:
    $ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-10
  2. リポジトリが公式のものか確認
  3. 信頼できないリポジトリからのインストールは避ける

🚨 注意: --nogpgcheckオプションでGPGチェックを無効化できますが、セキュリティリスクがあるため本番環境では推奨しません。

詳細: 第3章「3.4 リポジトリの管理」参照


D.6 SELinuxエラー

SELinux(Security-Enhanced Linux)によるアクセス制御に関するエラーです。通常のパーミッションは正しくても、SELinuxによって拒否されることがあります。

SELinux is preventing xxx from yyy

【要注意】

原因: SELinuxのセキュリティポリシーにより、操作が拒否されています。

対処法:

  1. SELinuxのログを確認:
    $ sudo ausearch -m AVC -ts recent
  2. audit.logを直接確認:
    $ sudo grep "denied" /var/log/audit/audit.log | tail -10
  3. 対象のSELinuxコンテキストを確認:
    $ ls -Z [対象ファイル]
  4. コンテキストをデフォルトに復元:
    $ sudo restorecon -Rv [対象パス]
  5. カスタムパスの場合、適切なコンテキストを設定:
    $ sudo semanage fcontext -a -t [タイプ] "[パス](/.*)?"
    $ sudo restorecon -Rv [パス]

よく使うSELinuxタイプ:

用途 SELinuxタイプ
Webコンテンツ(読み取り専用) httpd_sys_content_t
Webコンテンツ(書き込み可能) httpd_sys_rw_content_t
SSHの鍵ファイル ssh_home_t
ホームディレクトリ user_home_t

詳細: 第7章「7.4 SELinuxの基礎」参照

関連: 付録B「B.4 パーミッションエラー」参照

avc: denied { xxx }(audit.log内)

【要注意】

原因: SELinuxがアクセスを拒否しました。これは/var/log/audit/audit.logに記録されるメッセージです。

対処法:

  1. 拒否の詳細を確認:
    $ sudo ausearch -m AVC -ts recent
  2. audit2allowで推奨される対処を確認:
    $ sudo ausearch -m AVC -ts recent | audit2allow
  3. ブール値で解決できる場合:
    $ sudo setsebool -P [ブール値] on
  4. コンテキストの問題の場合:
    $ sudo restorecon -Rv [対象パス]

詳細: 第7章「7.4 SELinuxの基礎」参照

Permission denied(SELinux起因)

【要注意】

原因: 通常のUNIXパーミッションは問題ないが、SELinuxコンテキストが不適切なためアクセスが拒否されています。

判別方法:

  1. 通常のパーミッションを確認:
    $ ls -l [対象ファイル]
  2. SELinuxコンテキストを確認:
    $ ls -Z [対象ファイル]
  3. SELinuxが原因か確認(Permissiveモードで試す):
    $ sudo setenforce 0  # 一時的にPermissiveに
    # 操作を再試行
    $ sudo setenforce 1  # Enforcingに戻す

⚠️ 注意: SELinuxを無効化(setenforce 0)するのは一時的なテストのみにしてください。本番環境では必ずEnforcingモードで運用し、適切なコンテキストを設定してください。

詳細: 第7章「7.4 SELinuxの基礎」参照

関連: 付録B「B.4 パーミッションエラー」参照


D.7 認証エラー

ユーザー認証やSSH接続に関するエラーです。

Authentication failed

【軽微】

原因: パスワードが間違っているか、認証方式が一致していません。

対処法:

  1. Caps Lockがオフになっていることを確認
  2. パスワードは入力時に表示されないことを理解(入力されていないように見えても入力されています)
  3. パスワードを再設定(rootユーザーの場合):
    $ sudo passwd [ユーザー名]

詳細: 第1章「1.6 よくあるトラブルと対処法」参照

Permission denied (publickey)

【要注意】

原因: SSH公開鍵認証に失敗しています。鍵ファイルのパス、パーミッション、または公開鍵の登録に問題があります。

対処法:

  1. 秘密鍵ファイルが存在するか確認:
    $ ls -la ~/.ssh/
  2. 秘密鍵のパーミッションを確認・修正:
    $ chmod 600 ~/.ssh/id_ed25519
    $ chmod 700 ~/.ssh/
  3. 正しい鍵を指定して接続:
    $ ssh -i ~/.ssh/[秘密鍵ファイル] user@host
  4. サーバー側のauthorized_keysに公開鍵が登録されているか確認
  5. 詳細なデバッグ出力:
    $ ssh -vvv user@host

詳細: 第1章「1.6.2 Permission denied (publickey)が表示される」、第7章参照

sudo: xxx is not in the sudoers file. This incident will be reported.

【要注意】

原因: 現在のユーザーにsudo権限がありません。

対処法:

  1. wheelグループに所属しているか確認:
    $ id
  2. 所属していない場合、rootユーザーで追加:
    # usermod -aG wheel [ユーザー名]
  3. または、visudoでユーザーを直接追加(rootユーザーで実行):
    # visudo
    # 以下の行を追加:
    # [ユーザー名] ALL=(ALL) ALL

詳細: 第2章「2.9 ユーザーと権限の基礎」参照

su: Authentication failure

【軽微】

原因: suコマンドでのユーザー切り替え時にパスワードが間違っています。

対処法:

  1. 正しいパスワードを入力
  2. 切り替え先ユーザーのパスワードを再設定(rootで実行):
    $ sudo passwd [ユーザー名]
  3. sudoを使用してrootとしてコマンドを実行する方が安全:
    $ sudo [コマンド]

詳細: 第2章「2.9 ユーザーと権限の基礎」参照

Host key verification failed / WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

【要注意】

原因: 接続先サーバーのホスト鍵が、以前接続したときと異なっています。サーバーの再インストール、IPアドレスの再割り当て、または中間者攻撃の可能性があります。

対処法:

  1. サーバーの再インストールなど、正当な理由でホスト鍵が変わったか確認
  2. 正当な変更の場合、古いホスト鍵を削除:
    $ ssh-keygen -R [ホスト名またはIP]
  3. 再度接続して新しいホスト鍵を受け入れる

🚨 注意: 予期せずこのエラーが発生した場合、中間者攻撃の可能性があります。サーバー管理者に確認してください。

詳細: 第7章参照


D.8 その他

上記カテゴリに分類されないが、初学者がよく遭遇するエラーです。

command not found / bash: xxx: command not found

【軽微】

原因: 指定したコマンドが存在しないか、PATHが通っていません。パッケージがインストールされていない可能性もあります。

対処法:

  1. コマンドの場所を検索:
    $ which [コマンド名]
    $ type [コマンド名]
  2. パッケージがインストールされているか確認:
    $ dnf5 provides "*/[コマンド名]"
  3. 必要なパッケージをインストール:
    $ sudo dnf5 install [パッケージ名]
  4. PATHを確認:
    $ echo $PATH

詳細: 第2章「2.10 環境変数とPATH」参照

Segmentation fault / Segmentation fault (core dumped)

【重大】

原因: プログラムが不正なメモリアクセスを行い、異常終了しました。プログラムのバグ、ライブラリの不整合、またはハードウェア障害が考えられます。

対処法:

  1. パッケージを最新版に更新:
    $ sudo dnf5 update [パッケージ名]
  2. パッケージを再インストール:
    $ sudo dnf5 reinstall [パッケージ名]
  3. システムログを確認:
    $ journalctl -xe
  4. 問題が継続する場合、バグレポートを検討

詳細: 第8章参照

Killed

【重大】

原因: プロセスがシステム(通常はOOM Killer)によって強制終了されました。メモリ不足が原因であることがほとんどです。

対処法:

  1. メモリ使用状況を確認:
    $ free -h
  2. OOM Killerのログを確認:
    $ sudo dmesg | grep -i "oom\|killed"
  3. メモリを大量に使用しているプロセスを特定:
    $ ps aux --sort=-%mem | head -10
  4. 不要なプロセスを停止するか、スワップを追加

詳細: 第4章「4.9 スワップ領域の管理」参照

Cannot allocate memory

【重大】

原因: システムの利用可能なメモリが不足しています。

対処法:

  1. メモリ使用状況を確認:
    $ free -h
  2. メモリを多く使用しているプロセスを特定:
    $ ps aux --sort=-%mem | head -10
  3. 不要なプロセスを停止:
    $ sudo systemctl stop [サービス名]
  4. スワップを追加:
    $ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
    $ sudo chmod 600 /swapfile
    $ sudo mkswap /swapfile
    $ sudo swapon /swapfile

詳細: 第4章「4.9 スワップ領域の管理」参照


エラーが解決しない場合

  1. 付録Bのフローチャートを参照して、系統的に原因を切り分ける
  2. 本編の該当章を読み、基本的な仕組みを理解する
  3. 公式ドキュメントを確認する(AlmaLinux Wiki, Red Hat Documentation)
  4. エラーメッセージをそのまま検索する(ダブルクォートで囲むと効果的)

トラブルシューティングは経験の積み重ねです。エラーに遭遇したら、原因究明のプロセスそのものが学習機会だと捉えてください。

Linux