Fedora 35から:
# dnf install g++
Last metadata expiration check: 0:07:14 ago on Fri May 6 09:44:09 2022.
Package gcc-c++-11.3.1-2.fc35.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
# dnf info g++
Last metadata expiration check: 0:08:26 ago on Fri May 6 09:44:09 2022.
Error: No matching Packages to list
私はgcc-c++
これがパッケージであることを知っており、C ++をコンパイルするにはパッケージをインストールする必要があります。
g++
パッケージでない場合、インストール(またはアンインストール)が機能するのはなぜですか?
ボーナス質問:実際の名前ではなくgcc-c++
参照としてのみインストールされているかどうかを確認できますか?g++
答え1
実行すると、dnf install <something>
まずパッケージ名を探し、<something>
次のものを含むパッケージを探します。供給 <something>
。 「provides」値は実際には仮想パッケージ名です(Provides:
RPM仕様ファイルのキーワードを使用して設定)。
どのパッケージが利用可能かを確認できます。供給 g++
以下を実行して:
dnf repoquery --whatprovides g++
(Fedora 35では)は次のように生成します。
gcc-c++-0:11.2.1-1.fc35.i686
gcc-c++-0:11.2.1-1.fc35.x86_64
gcc-c++-0:11.3.1-2.fc35.x86_64
このdnf repoquery
コマンドはストレージ構成を照会します。ローカルにインストールされたパッケージについて尋ねるのと同じ質問を使用することもできますrpm -q --whatprovides
。
ボーナスの質問:実際の名前ではなくg ++を参照してgcc-c ++がインストールされているかどうかを確認できますか?
速く走る:
rpm -q --whatprovides g++
戻りコードは、インストールされているパッケージが利用可能かどうかを示しますg++
。
この機能は通常、特定のパッケージではなく特定の機能に関連付けられるパッケージの依存関係を指定するために使用されます。たとえば、Webサーバーが必要なものがある場合は、特定のパッケージ(httpd
または)に依存するようにするのではなく、nginx
仕様ファイルに次のものを作成できます。
Requires: webserver
その後、これらのパッケージのいずれかがインストールされると、依存関係が満たされます。
$ dnf repoquery --whatprovides webserver
caddy-0:2.3.0-2.fc35.x86_64
httpd-0:2.4.51-2.fc35.x86_64
httpd-0:2.4.53-1.fc35.x86_64
lighttpd-0:1.4.59-3.fc35.x86_64
lighttpd-0:1.4.64-1.fc35.x86_64
nginx-1:1.20.1-6.fc35.x86_64
nginx-1:1.20.2-1.fc35.x86_64