最小インストール(minimal install)ではかつて標準だったツールの多くが省かれています。「以前は使えていたのに突然なくなった」というケースも含め、どのパッケージをインストールすれば解決するかを調べる手順を体系的に解説します。
この記事では
dnf provides と rpm -qf を中心に、「command not found」を素早く解決するトラブルシュート手順を RHEL 9.4 / Rocky Linux 9 の実機出力を交えて説明します。PATH の問題で「ファイルは存在するのに見つからない」パターンへの対処も含めて網羅します。この記事のポイント
・dnf provides '*/コマンド名' で提供パッケージを特定できる
・rpm -qf でインストール済みファイルの属するパッケージを確認できる
・which / type コマンドで PATH 問題かパッケージ未導入かを切り分ける
・netstat・ifconfig は net-tools、iostat・sar は sysstat で解決できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜ「command not found」が起きるのか
Linux がコマンドを探す場所は環境変数PATH に列挙されたディレクトリだけです。「command not found」が起きる原因は大きく2つあります。・パッケージが未インストール:コマンド本体のファイルがシステムに存在しない
・PATH が通っていない:ファイルは存在するが
PATH に含まれるディレクトリに置かれていない(またはディレクトリ自体が PATH 外)RHEL 9 / Rocky Linux 9 の最小インストールは意図的にパッケージを絞っています。
/usr/sbin にある管理コマンドの多くが未収録で、特に古くから使われてきた net-tools(netstat・ifconfig)や sysstat(iostat・sar)は別途インストールが必要です。「なぜ見つからないのか」を切り分けてから対処するのが、遠回りに見えて最短ルートです。
dnf provides でコマンドのパッケージを特定する(RHEL 9 / Rocky Linux 9)
1. dnf provides の基本的な使い方
dnf provides は「このファイルを提供しているパッケージはどれか」を問い合わせるコマンドです。コマンドが見つからない時の第一手として使います。# check which package provides /usr/bin/netstat $ dnf provides /usr/bin/netstat # use glob pattern when full path is unknown $ dnf provides '*/netstat'
Last metadata expiration check: 0:08:22 ago on Mon 22 Sep 2026 16:42:00 JST. net-tools-2.0-0.62.20160912git.el9.x86_64 : Basic networking tools Repo : baseos Matched from: Filename : /usr/bin/netstat
Repo: baseos はベースリポジトリに含まれることを意味しており、追加のリポジトリ設定なしに dnf install できます。2. パッケージのインストールと確認
パッケージ名が特定できたらdnf install でインストールします。$ sudo dnf install net-tools
$ netstat -tunlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1158/sshd: /usr/sbi tcp6 0 0 :::22 :::* LISTEN 1158/sshd: /usr/sbi
3. yum whatprovides との関係
RHEL 7 以前ではyum whatprovides という別名で同じ機能が提供されていました。RHEL 8 以降の dnf でも whatprovides サブコマンドとして利用でき、dnf provides と同じ結果を返します。# どちらも同じ結果を返す $ dnf provides '*/traceroute' $ dnf whatprovides '*/traceroute'
dnf provides が公式の推奨表記です。古い手順書では yum whatprovides と書かれていることがありますが、動作は同一です。rpm -qf でインストール済みファイルの属するパッケージを確認する
rpm -qf(query file)は、すでにインストール済みのファイルがどのパッケージに含まれているかを調べるコマンドです。「このコマンドはどのパッケージから来たのか」を確認する場面で使います。rpm コマンドの使い方で他のオプションも解説しています。1. rpm -qf の使い方
# /usr/bin/ssh が属するパッケージを確認する $ rpm -qf /usr/bin/ssh openssh-clients-9.0p1-16.el9_4.x86_64
dnf provides との違いです。フルパスがわからない時は which コマンドで調べてから渡します。$ which ssh /usr/bin/ssh # コマンド置換を使えば1行で書ける $ rpm -qf $(which ssh) openssh-clients-9.0p1-16.el9_4.x86_64
2. rpm -qi でパッケージの詳細情報を確認する
パッケージの概要・提供元・バージョン・インストール日時を調べたい時はrpm -qi を使います。$ rpm -qi openssh-clients Name : openssh-clients Version : 9.0p1 Release : 16.el9_4 Architecture: x86_64 Install Date: Sat 21 Sep 2026 10:00:00 JST Group : Unspecified Size : 2246706 Summary : An OpenSSH client applications Description : OpenSSH is a free version of SSH (Secure SHell), a program for logging into and executing commands on a remote machine.
3. rpm -ql でパッケージが提供する全ファイルを確認する
「このパッケージが他にどんなファイルを置くか」を見たい時はrpm -ql を使います。net-tools の場合は次のとおりです。$ rpm -ql net-tools /usr/bin/ifconfig /usr/bin/netstat /usr/sbin/arp /usr/sbin/route /usr/sbin/slattach
実践:よくある「command not found」のケースと解決例
1. netstat・ifconfig が見つからない → net-tools
RHEL 7 以前は標準インストールに含まれていましたが、RHEL 8 以降の最小インストールでは省かれています。$ sudo dnf install net-tools
netstat の後継は ss コマンドで、RHEL 9 では標準でインストール済みです。新しい環境では ss -tunlp への移行も検討してください。2. iostat・sar・mpstat が見つからない → sysstat
パフォーマンス監視コマンド群(iostat、sar、mpstat、pidstat)は sysstat パッケージにまとめて含まれています。$ dnf provides '*/iostat' sysstat-12.5.6-3.el9_4.x86_64 : Collection of performance monitoring tools for Linux Repo : baseos Matched from: Filename : /usr/bin/iostat $ sudo dnf install sysstat
3. traceroute が見つからない → traceroute
コマンド名とパッケージ名が一致しているため、そのままdnf install traceroute でインストールできます。$ dnf provides '*/traceroute' traceroute-3.1-13.el9.x86_64 : Traces the route taken by packets over an IPv4/IPv6 network Repo : baseos Matched from: Filename : /usr/bin/traceroute $ sudo dnf install traceroute
4. dig・nslookup が見つからない → bind-utils
DNS の動作確認に使うdig と nslookup は bind-utils パッケージです。$ dnf provides '*/dig' bind-utils-32:9.16.23-18.el9_4.6.x86_64 : Utilities for querying DNS name servers Repo : appstream Matched from: Filename : /usr/bin/dig $ sudo dnf install bind-utils
PATH が通っていないだけの場合(which と type で確認)
パッケージはインストール済みなのに「command not found」になる場合は PATH の問題が疑われます。dnf provides を実行する前に、まずこちらの切り分けを行います。1. which でコマンドの場所を確認する
$ which netstat /usr/bin/netstat
which がフルパスを返せばファイルは存在します。このケースは PATH の問題です。which が何も返さない(または「no netstat in …」と表示される)場合はパッケージ未インストールです。2. type でコマンドの種別を確認する
type コマンドはシェルの組み込み(builtin)・エイリアス・外部コマンドを区別して表示します。$ type ls ls is aliased to `ls --color=auto' $ type ssh ssh is /usr/bin/ssh $ type cd cd is a shell builtin
3. echo $PATH で現在の PATH を確認・修正する
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/usr/sbin に置かれることが多く、一般ユーザーでは PATH から外れていることがあります。/usr/sbin が含まれていない場合は追加します。# 現在のセッションだけ PATH に追加 $ export PATH=$PATH:/usr/sbin # 恒久化するには ~/.bash_profile または /etc/profile.d/custom.sh に追記 echo 'export PATH=$PATH:/usr/sbin' >> ~/.bash_profile
トラブルシュート:dnf provides でヒットしない場合
1. EPEL リポジトリが必要なパッケージ
RHEL / Rocky Linux のベースリポジトリ(BaseOS・AppStream)に含まれないパッケージは、EPEL(Extra Packages for Enterprise Linux)を有効化してから検索します。htop や iftop などが代表例です。# EPEL を有効化 $ sudo dnf install epel-release # 再度 provides を実行 $ dnf provides '*/htop' htop-3.2.2-1.el9.x86_64 : Interactive process viewer Repo : epel Matched from: Filename : /usr/bin/htop $ sudo dnf install htop
2. dnf search でキーワードから探す
コマンド名が正確にわからない場合はdnf search でキーワード検索します。# 「network monitoring」に関係するパッケージを探す $ dnf search "network monitoring" # 特定の文字列を名前・概要に含むパッケージを探す $ dnf search sysstat
3. コマンドがすでに別パスに存在する場合
dnf provides でヒットしないもう一つの原因は、コマンドがシステム内に存在していてどのパッケージにも属していないケースです。ソースからビルドしたバイナリや、運用チームが独自に配置したスクリプトがこれに該当します。# システム全体でコマンド名のファイルを探す $ find /usr /opt /usr/local -name 'mycommand' -type f 2>/dev/null /usr/local/bin/mycommand
echo $PATH で /usr/local/bin が含まれているか確認し、なければ追加します。本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| コマンドのパッケージを特定する(未インストール) | dnf provides '*/コマンド名' |
| インストール済みファイルのパッケージを確認する | rpm -qf /usr/bin/コマンド名 |
| パッケージの詳細情報を調べる | rpm -qi パッケージ名 |
| コマンドのフルパスを確認する | which コマンド名 |
| 現在の PATH を確認する | echo $PATH |
| キーワードでパッケージを検索する | dnf search キーワード |
which コマンド名 でファイルの有無を確認します。ファイルが存在しない場合は dnf provides '*/コマンド名' でパッケージを特定し、dnf install でインストールします。ファイルが見つかる場合は PATH の問題なので echo $PATH で確認します。この切り分けの「型」を身につけておくだけで、ほとんどの「command not found」は数分以内に解決できます。
【注意】
find / -name 'コマンド名' -type f でシステム全体を検索する場合、ファイル数が多い環境では時間がかかることがあります。検索範囲を /usr /opt /usr/local に限定するか、locate コマンドを使うと高速に探せます。
パッケージ管理の基礎を押さえたら、次はLinuxサーバー全体の構築・運用スキルを体系的に固めませんか?
「command not found」を素早く解決できると、サーバーの初期設定が格段に速くなります。ただ、現場で本当に必要なのはコマンドの調べ方だけではありません。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:LinuxのTCPスタックをsysctlでチューニングする方法|somaxconn・バッファサイズ調整で高負荷時の接続詰まりを解消
- この記事の属するカテゴリ:Linuxトラブルシューティングへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます