「dnf list」で倉庫名の前の「@」とはどういう意味ですか?

「dnf list」で倉庫名の前の「@」とはどういう意味ですか?

インストールされているパッケージを一覧表示するには、通常、2つのうちの1つを実行します。

昔ながらの方法はrpm -qa | grep <whatever I look for>それを使うことです。

しかし、最近はパッケージをもっと完璧に見せたいので今からdnf list --installed <whatever I look for>

ところで、結果を見ると、いくつか理解できない部分があります。

次の例を考えてみましょう。

# dnf list --installed zsh                  
Last metadata expiration check: 0:13:25 ago on Mon Jul 11 05:48:04 2016.
Installed Packages
zsh.x86_64            5.2-5.fc24            @@commandline

(実際の印刷物のスペースは広いです。)

したがって、結果項目は「パッケージ」「バージョン」「repo」です。

私の場合は、次のようになります。

  • パッケージ:zsh.x86_64
  • バージョン: 5.2-5.fc24
  • 倉庫:@@コマンドライン

結果表はここまで理解していますが、リポジトリ名の前にある「@@」2つがどういう意味か混乱します。

また、「commandline」は、パッケージがコマンドラインからインストールされたことを示します(RPMをダウンロードして実行)。dnf install whatever.rpm コマンドラインから、等。 )。しかし、zshインストールが完了したと確信していますdnf install zsh

しかし、それはすべてではありません。

システムのリポジトリに複数のパッケージがインストールされていますが@System(インストールされていない場合もあります@fedora)、同様のエントリがあります。fedora@@@commandline

それでは、リポジトリ名の前またはこの単語は@正確に何を意味しますか?@@

@@commandlineリポジトリからインストールしたと確信していますが、なぜそれほど多くの重要なパッケージをインストールしましたか?

ベストアンサー1

ここに少し光を投げてみましょう。

dnf list all | lessすべてのパッケージ(インストール済みパッケージと利用可能なパッケージの両方)を表示します。出力には、「インストール済みパッケージ」と「使用可能パッケージ」の2つの部分があります。すべての「インストール済みパッケージ」の前には@記号が付いていますが、「利用可能なパッケージ」はそうではありません。そのため、@パッケージがインストールされているという印があると思います。パッケージがインストールされたが元のリポジトリが削除された場合は、@@フラグが提供されると思います。

dnf ソースコードは以下でホストされています。https://github.com/rpm-software-management/dnf。 srcコードをダウンロードした後にディレクトリからgrep commandline -ri .aを実行すると、何も返されません。しかし、githubページにはこれに関する言及があります。

パッケージ管理には、RPM、libsolv、および Hawkey ライブラリを使用します。

だからHawkeyを見てみると、次の場所にある同じプロジェクトでホストされます。https://github.com/rpm-software-management/hawkey。コードを見ると、grep -ri commandline .いくつかの結果が表示されます。

./src/types.h:#define HY_CMDLINE_REPO_NAME "@commandline"
./hawkey.spec:- fix: commandline RPMs do not provide their files (RhBug:1112810) (Ales Kozumplik)

だからパッケージcommandlineから。コマンドに表示されるhawkey理由は、コードが正しく機能していないようです。@comandlinednf listdnfhawkey

おすすめ記事