FedoraのDNFリポジトリのg ++​​とgcc-c ++の間のリンクは何ですか?

FedoraのDNFリポジトリのg ++​​とgcc-c ++の間のリンクは何ですか?

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

関連情報