dnf providesでコマンドが入っているパッケージを調べる方法|「command not found」をRHEL・Rocky Linuxで解決する手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxトラブルシューティング > dnf providesでコマンドが入っているパッケージを調べる方法|「command not found」をRHEL・Rocky Linuxで解決する手順
「netstatが使えない」「tracerouteが見つからない」——RHEL 9 や Rocky Linux 9 をセットアップした後、こんなエラーに直面したことはないでしょうか。

最小インストール(minimal install)ではかつて標準だったツールの多くが省かれています。「以前は使えていたのに突然なくなった」というケースも含め、どのパッケージをインストールすれば解決するかを調べる手順を体系的に解説します。

この記事では dnf providesrpm -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 で解決できる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

なぜ「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'

実機(RHEL 9.4)での出力例:

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

「net-tools-2.0-0.62... が 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

net-tools 1パッケージに netstat・ifconfig・arp・route がまとめて含まれていることがわかります。

実践:よくある「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

パフォーマンス監視コマンド群(iostatsarmpstatpidstat)は 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 の動作確認に使う dignslookup は 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

Linuxサーバーの現場でよく遭遇する「コマンドが見つからない」のほとんどはこの4パターンで解決します。それ以外のケースでは後述のトラブルシュートを参照してください。なお、Linuxサーバーのトラブルシュートや構築手順を体系的に身につけたい方には、2日間のハンズオン形式で実務スキルを集中習得できるLinuxサーバー構築セミナーも開催しています。

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)を有効化してから検索します。htopiftop などが代表例です。

# 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

ファイルが見つかれば PATH の設定問題です。echo $PATH/usr/local/bin が含まれているか確認し、なければ追加します。

本記事のまとめ

やりたいこと コマンド
コマンドのパッケージを特定する(未インストール) dnf provides '*/コマンド名'
インストール済みファイルのパッケージを確認する rpm -qf /usr/bin/コマンド名
パッケージの詳細情報を調べる rpm -qi パッケージ名
コマンドのフルパスを確認する which コマンド名
現在の PATH を確認する echo $PATH
キーワードでパッケージを検索する dnf search キーワード
「command not found」が出たら、まず 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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。