Linuxシステムのコマンドは、通常、配布リポジトリにインストールされているソフトウェアパッケージによって提供されます。特定のコマンドを提供するパッケージを決定するには、Linux分布に固有のパッケージ管理ツールを使用できます。これは、不足しているコマンドのインストールやトラブルシューティングパッケージの依存関係に役立ちます。
目次
さまざまなLinuxディストリビューションのコマンドを提供するパッケージを見つけるには、通常、配布に固有のパッケージ管理システム(APK、APT、DNF、PACMAN、Zypperなど)を使用します。
最も一般的なLinux分布のいくつかでこれを行う方法は次のとおりです。
Alpine Linuxでは、 APKパッケージマネージャーを使用して、特定のコマンドを提供するパッケージを見つけることができます。
<code># apk search -e pstree pstree-2.40-r1</code>
このコマンドは、Alpine LinuxパッケージリポジトリのPSTREEコマンドに関連するパッケージを検索します。
これがコマンドの内訳です:
APK検索-E PSTREEを実行することにより、Alpine Linuxは、PSTREEコマンドまたは正確に「PSTREE」という名前のパッケージをパッケージリポジトリを検索します。
PSTREEユーティリティがAlpine Linuxシステムにインストールされていない場合、PSTREEユーティリティを含むパッケージを見つけてインストールするのに役立ちます。
Arch LinuxとEndeavourosやManjaro Linuxなどのバリエーションでは、Pacmanコマンドを-fまたは-qoフラグを使用して、パッケージ内のファイル(またはコマンド)を検索できます。
たとえば、次のコマンドには、GREPコマンドを含むパッケージが表示されます。
<code>$ pacman -F grep</code>
コマンドPACMAN -F GREPは、特定のファイルまたはコマンドを提供するパッケージを見つけるために使用されます。
コマンドのさまざまな部分の意味は次のとおりです。
PACMAN -F GREPを実行すると、パッケージマネージャーはパッケージデータベースを検索し、GREPという名前のファイルまたは実行可能ファイルを含むすべてのインストールされたパッケージを一覧表示します。
このコマンドの出力には、通常、パッケージ名とファイルへの完全なパスがグレップに一致するフルパスが表示されます。たとえば、出力は次のようになる場合があります。
<code>core/grep 3.11-1 usr/bin/grep [...]</code>
これは、GREPコマンドがコアリポジトリのGREPパッケージによって提供され、実行可能ファイルが/usr/bin/grepにあることを示しています。
複数のパッケージがGREPに一致するファイルを提供する場合、それらはすべてリストされます。逆に、GREPという名前のファイルを提供していないパッケージがない場合、コマンドは出力を返しません。
Pacman -QOコマンドを使用して、特定のファイルまたはコマンドを所有または提供するパッケージを見つけることもできます。
<code>$ pacman -Qo grep</code>
コマンドのさまざまな部分の意味は次のとおりです。
Pacman -Qo Grepを実行すると、Pacmanはシステム上にインストールされているすべてのパッケージを検索し、Grepという名前のファイルまたは実行可能ファイルを含むパッケージを見つけます。
このコマンドの出力には、通常、GREPに一致するファイルがあるパッケージ名が表示されます。たとえば、出力は次のようになる場合があります。
<code>/usr/bin/grep is owned by grep 3.11-1</code>
これは、GREPコマンド(/usr/bin/grepにある)がgrepパッケージによって提供されていることを示しています。
複数のパッケージがGREPに一致するファイルを提供する場合、それらはすべてリストされます。 GREPという名前のファイルがあるパッケージがない場合、コマンドは出力を返さないでしょう。
このコマンドは、特定のファイルまたはコマンドがArch Linuxシステムに属するパッケージを見つける必要がある場合に役立ちます。不足しているファイルや依存関係のトラブルシューティングを支援したり、特定のコンポーネントを提供するパッケージを選択的に再インストールするのに役立ちます。
PACMAN -F GREPとPACMAN -QO GREPの主な違いは、-fがパッケージデータベースを検索して特定のファイルを含むパッケージを見つけ、-QOはシステムにインストールされ、それらのパッケージを探すファイルを検索することです。
UbuntuなどのDebianベースのシステムでは、-sオプションを使用してDPKGコマンドを使用して、特定のファイルをインストールするパッケージを検索できます。
ただし、ファイルがインストールされていない場合は、APTファイルコマンドを使用する必要があります。まず、APTファイルがインストールされ、そのデータベースが更新されていることを確認してください。
<code>$ sudo apt update $ sudo apt install apt-file $ sudo apt-file update</code>
次に、次のコマンドを使用して、特定のコマンド(PSTREEコマンドなど)を提供するパッケージを検索します。
<code>$ apt-file search pstree</code>
サンプル出力:
<code>criu: /usr/lib/python3/dist-packages/pycriu/images/pstree_pb2.py manpages-ja: /usr/share/man/ja/man1/pstree.1.gz<strong></strong></code><mark> psmisc:/usr/bin/pstree</mark> psmisc:/usr/bin/pstree.x11 psmisc:/usr/share/man/de/man1/pstree.1.gz psmisc:/usr/share/man/fr/man1/pstree.1.gz psmisc:/usr/share/man/man1/pstree.1.gz psmisc:/usr/share/man/man1/pstree.x11.1.gz psmisc:/usr/share/man/pt_br/man1/pstree.1.gz psmisc:/usr/share/man/ru/man1/pstree.1.gz psmisc:/usr/share/man/uk/man1/pstree.1.gz psmisc:/usr/share/pixmaps/pstree16.xpm psmisc:/usr/share/pixmaps/pstree32.xpm python-psutil-doc:/usr/share/doc/python-psutil-doc/examples/pstree.py 要約:/usr/lib/corap/core/pstree SystemTap-doc:/usr/share/systemtap/examples/process/pstree.meta SystemTap-doc:/usr/share/systemtap/examples/process/pstree.stp Tomoyo-Tools:/usr/sbin/tomoyo-pstree Tomoyo-Tools:/usr/share/man/man8/tomoyo-pstree.8.gz
上記の出力で気づいたように、PSMISCパッケージはPSTREEコマンドを提供します。このアプローチを使用すると、インストールする必要があるパッケージを特定したり、PSTREEがシステムで利用できることを確認できます。
または、既にPSTREEをインストールしていて、PSTREEがこのパッケージから来ていることを確認したい場合は、以下を使用できます。
<code>$ dpkg -S pstree</code>
FedoraおよびAlmalinux、Centos、Rhel、Rocky Linuxなどの他のRPMベースのシステムでは、DNFコマンドを使用できます。古いシステムでは、Yumを使用する必要がある場合があります。
たとえば、パターン*/PSTREEに一致するファイルを提供するパッケージを検索するには、次のことを実行できます。
<code>$ dnf provides */pstree</code>
以下は、コマンドの関数の内訳です。
このコマンドを実行すると、DNFはパッケージデータベースを検索し、PSTREEという名前のファイルを含むすべての利用可能なパッケージを一覧表示します。このファイルは通常、PSTREEユーティリティの実行可能ファイルであり、プロセスツリーを表示します。
このコマンドの出力には、PSTREEファイルのパッケージ名とバージョン番号が表示されます。たとえば、出力は次のようになる場合があります。
<code>psmisc-23.6-4.fc39.x86_64 : Utilities for managing processes on your system Repo : fedora Matched from: Provide : /usr/bin/pstree</code>
これは、PSTREEファイル(/usr/bin/pstreeにある)が、主にFedoraリポジトリのPSMISCパッケージ(バージョン23.6-4)によって提供されていることを示しています。
DNFの提供コマンドを使用することにより、システムで特定のファイルまたはユーティリティを取得するためにインストールする必要があるパッケージを見つけることができます。
suse and opensuseでは、Zypper SE -Providesコマンドを使用して、指定されたファイルまたは実行可能ファイルを提供するパッケージを検索できます。
<code>$ zypper se --provides '/usr/bin/grep'</code>
これがコマンドの内訳です:
このコマンドを実行すると、Zypperはパッケージデータベースを検索し、ファイル/USR/BIN/GREPを含むまたは提供する利用可能なすべてのパッケージを一覧表示します。
このコマンドの出力には、指定されたファイルを提供するパッケージの名前、バージョン、およびリポジトリ情報が表示されます。たとえば、出力は次のようになる場合があります。
<code>Loading repository data... Reading installed packages... S | Name | Summary | Type -- ------------------------- ------------------------------------------ ------- | grep-3.11-3 | Pattern matching utilities | package [...]</code>
この出力は、ファイル/USR/BIN/GREPが主にGREPパッケージ(バージョン3.11-3)によって提供されていることを示しています。
Nixos Linuxでは、NIX-ENVユーティリティを使用して、特定のコマンドを提供するパッケージを見つけることができます。
たとえば、どのパッケージをPSTREEコマンドを提供するかを見つけるには、次のことを実行できます。
<code>$ nix-env -qaP pstree</code>
これにより、インストールされているすべてのパッケージを検索し、マッチが見つかったときにパッケージ名とパスを印刷します。
サンプル出力:
<code>nixpkgs.pstree pstree-2.39</code>
PSTREEコマンドがPSTREE-2.39パッケージによって提供されていることを示します。
NIX検索コマンドを使用して、特定のコマンドを提供するパッケージの名前を見つけることもできます。このコマンドはまだ実験段階にありますが、それを使用してパッケージを検索できます。
最初の実行は遅いかもしれませんが、その後の実行はキャッシュされた結果を使用します。
たとえば、PSTREEコマンドを含むパッケージを見つけるには、実行してください。
<code>$ nix --extra-experimental-features "nix-command flakes" search nixpkgs pstree</code>
サンプル出力:
<code>* legacyPackages.x86_64-linux.psmisc (23.6) A set of small useful utilities that use the proc filesystem (such as fuser, killall and pstree) * legacyPackages.x86_64-linux.pstree (2.39) Show the set of running processes as a tree</code>
Gentoo LinuxのApp-Partage/GentoolkitパッケージのEquery Toolを使用して、特定のコマンドを提供するパッケージを見つけることができます。
App-Partage/gentoolkitをインストールしていることを確認してください。
<code># emerge --ask app-portage/gentoolkit</code>
特定のコマンドを提供するパッケージを検索するには、with belningsオプションを使用して使用します。
<code>equery belongs /path/to/command</code>
あなたが探しているコマンドへのフルパスに/path/to/commandを置き換えます。
コマンドへのパスがわからない場合は、whereisコマンドを使用してそれを見つけることができます。
<code># whereis pstree</code>
サンプル出力:
<code># whereis pstree pstree:<strong></strong></code><mark> /usr/bin/pstree</mark> /usr/share/man/man1/pstree.1.bz2
次に、コマンドを使用して、PSTREEコマンドを提供するパッケージを見つけましょう。
<code># equery belongs /usr/bin/pstree</code>
これにより、GREPコマンドを提供するパッケージ名とカテゴリが出力されます。たとえば、
<code> * Searching for /usr/bin/pstree ... sys-process/psmisc-23.6 (/usr/bin/pstree)</code>
PSTREEコマンドがSYS-APPS/PSMISCパッケージによって提供されていることを示します。
フルパスを指定せずにのみコマンド名を検索する場合は、hasuseオプションを使用できます。
<code># equery hasuse search-term</code>
これにより、特定の使用フラグを使用してパッケージを検索するか、特定の実行可能ファイルを提供します。
ほとんどの主要なLinuxディストリビューションのパッケージマネージャーは、特定のコマンドまたはファイルを提供するパッケージを特定するための組み込みオプションを提供します。パッケージデータベースを検索し、特定のコマンドまたはファイルのソースパッケージを見つけることができます。
この機能は、不足している依存関係のトラブルシューティング、パッケージを選択的に再インストールし、システムに必要なコンポーネントがインストールされていることを確認するのに役立ちます。
関連記事: Linuxで特定のファイルを提供するパッケージを見つける方法
以上がLinuxでコマンドを提供するパッケージを見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。